JavaRush /Java Blog /Random EN /Java. Action plan

Java. Action plan

Published in the Random EN group
Java.  Action Plan - 1

Content:

  1. Section Zero - Java Core
  2. Tools
  3. JDK API
  4. What's New in Java 8
  5. SQL, databases, JDBC
  6. Frameworks
  7. Libraries and frameworks for testing
  8. Service libraries
  9. API clients
  10. Design Patterns
  11. Additional knowledge
What should a potential Java Junior know to get a first job or at least apply for a Trainee position in a good company? What tools will help a Java programmer reach the next level? Which technologies to study and which ones to leave for later? There is no standard answer to these questions, just as there is no single plan of action that would suit absolutely everyone. Some companies strive for development, constantly introducing new technologies and testing the capabilities of new versions of the language, while others stubbornly cling to the old ones. There are also “middle” options, and, perhaps, there are more of them. However, we have put together a roadmap or roadmap for an aspiring Java developer. In an effort to make it as simple as possible, we have indicated only those technologies and topics that are necessary for the vast majority of “javistes”. It should be remembered that not everything needs to be studied in detail (some of the above can only be mastered by working in a team), but it will not hurt to have a general understanding of them.

0. Section Zero - Java Core

We inserted section zero into the article just in case, in case a person who is just planning to learn Java and doesn’t know where to start comes here. Java Core is something that even a beginner should know very well. That is, to know basic things, to understand what the language offers to solve a particular problem, and in simple cases to be able to apply this knowledge. You can practice Java Core on JavaRush, and if you haven’t done this yet, we invite you to take the course ! Well, for everyone else, let’s remind you of the main milestones of Java Core:
  • Basic Java Constructs, Operators, and Data Types
  • OOP and its implementation in Java
  • Exceptions
  • Java Collections
  • Generics
  • Multithreading

1. Tools

IDE or integrated development environment

The main tool of a modern developer is an IDE. There are many of them on the market today, but in professional Java development there are usually only two names. This is the free Eclipse , built on plugins , which has held the palm for many years in a row, and IntelliJ IDEA , which has been actively displacing Eclipse in recent years, and this despite the fact that a subscription to the Ultimate version needed by professionals costs money. Let us remind you that in the JavaRush course we use the free edition of Community IntelliJ IDEA, which has certain functional limitations compared to Ultimate. The phrase “I know the IDE” means that you are familiar with the basic capabilities of the development environment, you know how to compile, run, debug and test files, and refactor code. Mastering hot keys will be a good help in speeding up your work. Don't be lazy, spend a few hours learning about IDE features you didn't know about and start using them in practice. And don't neglect debugging, it's a very useful skill. All these actions will help to significantly improve the speed and quality of your work.

Tools for automatic assembly

Today, Java projects most often use tools such as Maven and Gradle. It is not necessary to study them thoroughly, but it will be useful to understand how they differ from each other, what they are based on, what tasks are (in Gradle) and phases with goals in Maven. It will be enough to read about the systems and deploy a couple of small projects on them. This is quite simple to do, and you will understand the details in real work conditions.

Version control systems and online hosting services

A version control system is what helps programmers work in a team on a common project without “breaking” it, synchronize disparate pieces of code made by different people, roll back unsuccessful updates and add new ones. The most common are two version control systems. One of them is distributed and is called Git, the second is centralized, called SVN (aka Subversion). Today, Git is the de facto standard. Working with this system is more convenient and easier; it is supported by all IDEs (as well as SVN). Working with Git can be tried out quickly and easily; fortunately, there is a lot of information on this topic on the Internet. For example, the interactive textbook GitHowTo, available in Russian (goes through very quickly). It is very important for a novice developer to master online hosting services for version control systems. Most often they are based on Git and are called Git platforms (although some of them can work with different version control systems). The most popular of them is GitHub. BitBucket and GitLab are also quite common. These systems help you store and retrieve code, and also do what Git can do, only not through the command line, but through the interface. GitHub also allows you to check code and offer solutions to problems directly on the site. There you can also find someone else’s open source project and try to offer your own solutions to improve it. Essentially, GitHub is a kind of social network for developers. So if you haven't already, be sure to create an account on GitHub and host your projects there. Also read about GitLab and BitBucket, and if you have time, you can try them, they have free versions. By the way, all these platforms are fully integrated with modern IDEs. Java.  Action Plan - 2

2. JDK API

This section highlights those JDK APIs that a modern Java developer needs to know quite confidently. It wouldn’t hurt for a programmer to look into the source code of these libraries from time to time, navigate them, and understand when they need to be used and why. Side effect: if you are well versed in these APIs, you will likely have a much easier time acing your interview.

Java Collections Framework

The Java Collection Framework is one of the most important APIs of the Java language and every developer should know it. It represents a hierarchy of interfaces and implementations of standard data structures in Java such as list, linked list, set, stack, queue, hash table, and many others. The developer must have a good understanding of the classes ArrayList, HashMap, HashSet, LinkedHashSet, TreeSet and others, and know about their properties. In particular, you need to understand the time and memory costs of a particular collection for standard operations (index, search, insertion, deletion) and, based on this, correctly apply them in your projects. Collections in Java are implemented very well, but if there is a need, the developer can offer his own implementation. A programmer who is well versed in collections can extend or redefine logic in already written classes, or implement everything from scratch.

Java Concurrency API

Java was originally designed to support parallel programming, and since version 5.0, the language includes high-level APIs for parallel threads. So a competent Java developer simply must have a good understanding of multithreading and have an understanding of the main APIs from the java.util.concurrent.* packages . At a minimum, you need to know and clearly understand what Thread, Runnable, object locking and synchronization are. Be sure to understand the concepts of deadlock, livelock, race conditions, and what to do with it all. To feel confident, learn synchronizers from java.util.concurrent.*, such as Semaphore, CyclicBarrier, CountDownLatch, Phaser, Exchanger<V>, CompleteableFuture and so on. And also the Callable and Future interfaces.

Java I/O API

Novice developers often ignore in-depth study of Java I/O and Java Non-blocking I/O . But in vain: these Java APIs make working with threads easier and are regularly used in real applications. Especially classes like File, InputStream, OutputStream, Reader and Writer from the java.io package, which is the core of the Java IO API. Java Non-blocking I/O (java.nio) is a collection of application programming interfaces designed to implement high-performance I/O operations. These include, in particular, ByteBuffer, FileChannel and Selector, among others. Take the trouble to understand these APIs, you won’t regret it.

Device class Object

Once you understand the Object superclass, in a sense you become a “native Java speaker”, much better aware of the OOP structure and many processes. The java.lang.Object class lies at the very top of the class hierarchy. In addition to a better understanding of what's going on, knowing the class's methods will make interviewing much easier—interviewers just love testing candidates with the Object class and its objects.

3. New features in Java 8

Despite the fact that time has passed since the release of Java 8, and other numbered updates have already appeared, it was the eighth version that became iconic. It introduced important innovations that simplify, and in some sense change, approaches to programming in Java. You must understand how to use lambda expressions, as well as the Stream API in Java 8 and the new date and time APIs.

4. SQL, databases, JDBC

Few Java developers do not encounter SQL queries and databases in their work. Therefore, it is important to understand what SQL and relational databases are, how they work, and to be able to write simple queries to join two tables. For training, you can try working with one of the DBMSs, for example, PostgreSQL or MySQL . It would also be nice to gain basic knowledge of non-relational databases, noSQL approaches and a superficial familiarity with the document-oriented DBMS MongoDB . To work with databases in pure Java, you can use the JDBC standard along with the API of the same name. It is implemented as the java.sql package, which is included in the JDK. Today it is rarely used in its pure form, but it can often be found in older support applications, and more modern and generally accepted tools are often based on this standard.

5. Frameworks

Among the requirements for a Junior Java Developer today you can increasingly find “knowledge of Spring, Hibernate, Spring Boot”. Learning these technologies on your own is a very difficult task, but nevertheless, it is possible, especially at a superficial level. A deeper understanding will come as you work. So.

Spring Framework

Almost every application built in Java these days uses the Spring Framework. This powerful framework provides a specific coordinate system, the backbone with which the application is built. A Spring application is much easier to test and maintain. And all thanks to dependency injection.

Hibernate

Another most important framework for Java developers is Hibernate. It implements the JPA (Java Persistence API) specification, which solves object-relational mapping (ORM) problems. Most Java applications interact with databases, and if we are talking about relational databases, working with them without Hibernate is inconvenient. This framework provides developers with a number of important features, in particular, caching and transactions out of the box, which in turn allows them to focus their efforts on developing application logic and frees the programmer from many low-level tasks when working with relational databases. This significantly improves developer productivity.

Spring MVC

This framework ensures application development according to the Model - View - Controller pattern, using loosely coupled ready-made components. Study this pattern (design patterns are discussed below) and the logic of Spring MVC. In practice it is used quite often.

Spring Boot

With the right skill, Spring makes it easy to create a Java application. In turn, Spring Boot makes it easy to create a Java application based on Spring. Spring Boot allows you to easily create full-fledged Enterprise Spring applications that can be launched with minimal effort: auto-configuration eliminates most of the hassles associated with configuring Spring applications.

6. Libraries and frameworks for testing

Some future developers are sure that testing code is not their concern at all, but that of special people who are called testers. In practice, this is not quite the case. Testing, especially unit testing (most often called unit testing), is a very important skill for every programmer. Moreover, newcomers who have just started their duties are often tasked with covering someone’s code with unit tests. So we highly recommend learning the JUnit library and developing the habit of writing unit tests for your code. Also check out the Mockito framework, which can be used with JUnit to create mock dependency classes.

7. Service libraries

Java has a huge number of service libraries that help solve almost any problem facing a developer. It is impossible to study them all, and there is no particular point in doing so. But navigating through them is a great idea. Here we will highlight just a few of those that are very often used in practice.

Libraries for logging

First of all, we can mention log4j and Slf4j . These libraries are designed to hide the implementation of routine logging operations that occur while Java applications are running.

Libraries for JSON

JSON, the format for transferring information from client to server, is the most commonly used format today. There are several good libraries that work with JSON, the most popular being Jackson and google-gson .

Google Guava

Guava is a project with core Java libraries developed by Google. Here you can find new types of collections (multimap, multiset and others), immutable collections, graphs, functional ones, utilities for parallelism, I/O, hashing, string processing and much more.

Apache Commons

Commons is a huge project containing many useful Java utilities for various purposes. Thus, Apache Commons libraries underlie Tomcat, Hibernate and a number of other large projects. There are a lot of libraries in Apache Commons. Let's mention Commons IO, which simplifies I/O operations, Commons CSV for working with csv files, Commons Math for working with complex mathematical and statistical operations and calculations, Commons CLI for analyzing command line arguments.

8. API clients

REST is a naming style for endpoints for accessing resources over the network in a human-readable format. It is better for a modern Java developer to understand the REST ideology and also know Spring RestTemplate , a very useful library for creating a REST client.

9. Design Patterns

If a novice developer is familiar with design patterns, that is, the rules of good manners in Java programming, and even knows how to apply them in practice, he will instantly increase his value on the labor market. Beginners often underestimate patterns because they rarely create complex applications while studying. However, if patterns are not applied to serious projects, maintaining and adapting code becomes an extremely difficult task. So don’t be lazy, study the patterns and apply them in your personal projects. Your future employer will be very grateful for this.

10. Additional knowledge

Algorithms and data structures

“Algorithms and Data Structures” is the name of an entire course taught in technical universities. It reveals the theoretical basis for constructing various data structures. And in practical classes they learn to work with them - putting and retrieving data, searching and sorting them. Actually, “Algorithms” in this phrase mean exactly sorting and searching. Over the years, computer scientists have developed many algorithms. Some of them are educational in nature, since despite the relative ease of implementation, they are not very effective in operation. For example, they work slowly, which can be noticeable on large data pools. Or they consume a lot of memory. Other algorithms have proven to be very effective. So much so that they have been included in the official libraries of most programming languages. Accordingly, today it is not necessary to develop such algorithms independently. It is enough to know where they are. And yet, most experienced developers recommend that beginners go through “algorithm school”—implementing them on their own while studying. This develops programmer thinking. It also helps with interviews; they really like to ask sorting and searching problems.

Servlets

A servlet is a way to handle a user request. Today they are not used everywhere and not always, but it will be useful to get an idea about them.

HTML and CSS

Everyone should know the basics of layout. This knowledge is quite easy to obtain, and if you haven’t done it yet, devote a couple of days to this lesson. At the same time, you will take a break from more complex topics.

XML

Extensible Markup Language used to be ubiquitous in Java development. It is gradually being replaced by JSON, but XML is still used today. It is not difficult to learn, so you can give this language a little attention.

JavaScript

Surveys of developers show that even those who have absolutely nothing to do with front-end development wrote scripts in JavaScript from time to time. Knowing the basics of this language can be considered a rule of good manners, so don’t be lazy, read about it and create a dozen or two scripts. It won't be redundant.
Comments
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION