As the first major programming language, Java has a long history. Generation after generation of Java programmers have been learning Java. How will the learning curve for Java programmers change in 2020? This article is attached to the details of each part of the required knowledge of the tutorial link address, and will continue to update, I hope to progress with you!

First above:

The RoadMap above Outlines the technical RoadMap that you need to master as a Java programmer. It’s great to know all of the RoadMap, but if you haven’t learned it yet, just keep learning!

Basic knowledge that must be mastered

As a programmer, of course, there is a threshold, the threshold is the need to master the basic knowledge, write a good program not only to know, but also to know why. In this way, in the process of writing procedures, through the phenomenon to see the essence, from the essence of improving the ability to write code.

1. Git & Github

Github is the world’s largest gay dating platform, and any programmer should know that. As the hosting platform of open source trend, GitHub has a large number of excellent open source projects. If necessary, you can borrow various projects from GitHub. If you don’t need, you can also read the above code and improve your writing level.

Git as an excellent version management tool, I believe that most companies are in use, so master Git command and use is very important. More importantly, Git flow gives us a new way to manage code.

2. Linux

Many programmers used to Windows may not be familiar with Linux, but we should know that the vast majority of servers are deployed on Linux, do not understand Linux to say that they know programming, is not very funny? You don’t even know what platform your code runs on. Even if you are not an operation and maintenance specialist, you should also be able to deploy your own programs. The problems you need to pay attention to in deployment must be paid attention to, and the basic commands of Linux must be 100% mastered.

3. Data structure and algorithm

If you only use libraries in Java, then at least the basic data structures such as array, Linked List, Hash table, binary tree, Queue, stack and graph need to be mastered.

If you want to get into Trie, B-Tree, AVL Tree, etc.

4. HTTP / HTTPS

This is the world of the Web. If you understand HTTP, you can go anywhere.

Refer to my previous article:

An article will get you to the bottom of the SSL/TLS protocol

5. Design patterns

The design pattern can be said to be the dividing line between the great god and the small worker.

Of course, this is not to ask you to memorize, the key is reasonable application.

6. Computer principles

It’s important to know how a computer works, your code, how programs are translated into languages that the computer understands, how the CPU schedules, how memory works, etc.

Java learning path

With this foundation in place, we can finally begin the journey of learning Java.

1. The tool

1.1 Development Tools

To do a good job, he must sharpen his tools. Having good tools can improve development efficiency. Eclipse and IDEA are of course the ides of choice.

5 Java IDE gems you can’t Afford not to know about in 2020

1.2 Building Tools

Maven and Gradle are the only Java build tools of choice. ANT is the previous build tool, so you don’t need to know it in detail.

1.3 Virtualization Tools

The sudden emergence of Docker has created a new era of virtualization. With its excellent performance and resource occupancy rate, Docker has won the love of many enterprises. Docker must learn. With Docker, it is natural to use Kubernetes(K8S) for management.

1.4 the CI tool

Jenkins is a great tool for CI.

2. JDK

JDK proficiency is directly related to writing good code, as we’ll see in more detail.

2.1 Java Collections

Collection classes are used in any program. You should be familiar with ArrayList, HashMap, HashSet, LinkedHashSet, and TreeSet. Be familiar with the implementation principle. Here are some articles I’ve compiled and written about Java collections:

  • Fail-safe fail-fast
  • Iterator to list of three methods
  • AsList and ArrayList have to tell the story
  • Four ways to Copy an ArrayList
  • Learn more about the differences between HashMap and TreeMap
  • Understand the difference between HashMap and LinkedHashMap in depth
  • EnumMap and EnumSet
  • Comparable versus Comparator in Java
  • Implementation of SkipList and ConcurrentSkipListMap in Java
  • Understand the Queue family in Java
  • PriorityQueue and PriorityBlockingQueue
  • SynchronousQueue will break down
  • The use of DelayQueue in Java
  • New to JDK12: Teeing Collectors

2.2 Java concurrency and multithreading

Multithreading and concurrency is an important topic in Java, and the Concurrency package provides a number of useful synchronization classes: CyclicBarrier, CountDownLatch, Semaphore, and more.

The Locks and Atomic sections under the Concurrency package provide some implementation of the new Locks. A deeper understanding of these topics will help you better understand the use of resources in a multi-threaded environment.

Thread and Thread Pool are the basis of multithreading, which need to be deeply understood and applied.

Java concurrency and multithreading articles are as follows:

  • Java. Util. Concurrent profile
  • Synchronized keyword in Java concurrency
  • Use of the Volatile keyword in Java
  • The difference between Wait and sleep in Java
  • The use of futures in Java
  • Use of ExecutorService in Java concurrency
  • Difference between Runnable and Callable in Java
  • Use of ThreadLocal in Java
  • The lifecycle of a thread in Java
  • The use of Joins in Java
  • How do I close a Thread in Java
  • Atomic classes in Java
  • Difference between Interrupt,interrupted and isInterrupted in Java
  • Daemon threads in Java
  • Introduction and use of ThreadPool in Java
  • The Fork Join framework in Java
  • Use of Locks in Java
  • Use of CountDownLatch in Java concurrency
  • CyclicBarrier usage in Java
  • Perform performance tests using JMH (Java Microbenchmark Harness) in Java
  • Use of ThreadLocalRandom in Java
  • Use of FutureTask in Java
  • All you need to know about CompletableFuture is this article
  • How can you learn multithreading without Phaser
  • Semaphore is used in Java to build a pool of blocking objects
  • Build efficient result caching in Java
  • The use of CompletionService in Java
  • Use the ExecutorService to stop the threading service
  • Unexpectedly, the thread was starved to death!
  • A Reject Policy for Bounded Queues in Java
  • Deadlock due to improper execution order
  • Synchronous class based AbstractQueuedSynchronizer (AQS)
  • Non-blocking synchronization mechanism and CAS
  • Implementation of lock-free algorithm
  • Java Memory Model (JMM) and happens-before
  • The Java server is used concurrently

2.3 New features in Java 8-15

Java 8 introduces many new and useful things like Lambda,Stream APIS, Date Time apis, and more. The introduction of functional programming in Java 8 is a direct change from previous programming practices.

JDK8

  • Java functional programming and Lambda expressions
  • Introduction to Java 8 Streams
  • The usage of Collectors in Java Stream
  • Implement if/else logic in Java 8 Stream expressions
  • How to use stream in Java 8 map
  • Operation types and use of peek in Java 8 Stream
  • Java 8 Stream Reduce
  • Introduction to Spliterator in Java 8 Stream
  • How to break java8 stream foreach
  • Exception handling in Java 8 lambda expressions
  • Use of predicate Chain in Java 8
  • Build infinite streams in Java 8
  • Custom parallelStream Thread pool
  • AsList and ArrayList have to tell the story
  • Functional Interface classification and use in Java
  • A little secret about Throw Exceptions in Java
  • Introduction to Spliterator in Java 8 Stream
  • How to break java8 stream foreach

Of course, Java 8 is the minimum requirement, and Java 13 is available now. If you have the ability, you can learn the new features of Java 9 through Java 13: Modules, var for local variables, static factory methods for collections, etc.

JDK9

To be continued…

JDK10

  • New features in JDK10: VAR and anonymous classes
  • New features in JDK10: VAR generics and multiple interface implementations
  • New in JDK10: local variable type var

JDK11

  • New feature in JDK11: New HTTP API

  • New features in JDK11 :HTTP API and Reactive Streams

JDK12

  • New in JDK12 :CompactNumberFormat
  • New to JDK12: Teeing Collectors

JDK13

JDK14

  • New features in JDK14 :JFR,JMC, and JFR event streams
  • JCMD: debugger in JDK14
  • Introduction to Java Tools in JDK14
  • New in JDK 14: Switch expressions
  • New in JDK 14: Text Blocks
  • New to JDK14 :Lombok’s terminator Record
  • New in JDK 14: Better NullPointerExceptions
  • New in JDK 14: Instanceof pattern matching

JDK15

  • A look at new features in JAVA 15

2.4 Java IO

Java. IO and java.nio are two Java packages that handle IO. IO is very important for file reading and writing, including network data flow reading and writing.

IO package File, InputStream, OutputStream, Reader, Writer.

You also need to master ByteBuffer, FileChannel, Selector, and so on in the Java.nio package.

2.5 In-depth understanding of the JVM

To be continued…

3. The framework

If you want to do large Java projects, the framework is indispensable, using a framework can save development time and improve development efficiency.

3.1 the Spring

The most popular Java framework is Spring. Spring rules Java for the most part. Spring emerged as an alternative to EJBs, shedding the complexity of EJBs and using AOP and IOC to provide a lightweight, configurable container that has won a lot of market share. The latest Spring release is 5.*.

In addition to Spring Core, Spring MVC is currently gaining market share. Doing well in Web development Spring MVC is also essential.

Spring 5.X Series tutorials: Everything you can think of in Spring5 – constantly updated

3.2 Spring Boot

Although Spring simplifies EJBs, it still requires a lot of configuration files, and the advent of Spring Boot has greatly reduced the need to write configuration files.

When it comes to developing the fastest and most reliable framework, Spring Boot definitely has a place.

Spring Boot 2.X Series tutorials: Learn Spring Boot from Scratch in seven days – continuous updates

3.3 Netty & Mina

Netty & Mina are two NIO frameworks, whose essence is asynchronous IO. The biggest difference from ordinary IO is to improve efficiency and save time.

Spring Web Reactive, recently introduced in Spring 5, is implemented based on Netty.

To be continued…

3.4 the ORM

The use of ORM framework is convenient for our database operation, Hibernate and Mybatis are two ORM framework excellent players. However, as far as I know, Mybatis is mostly used in China, while Hibernate is preferred in foreign countries.

Why is that? In my understanding Hibernate is an implementation of JPA, more standard.

3.5 the service

It’s like you’re inferior these days if you don’t mention microservices. Fear not, Spring has specially prepared the Spring Cloud for us.

Not all services need micro-services, micro-services are not the more the better, depending on the project, depending on the situation, depending on the mood!

To be continued…

4. Test the framework

Many of you may prefer writing code to writing tests. Some friends think that testing is done by testers, not developers.

But testing is really important, from unit testing to end to end testing to integration testing, we’re on the road all the time.

The frameworks for unit testing, Junit,Mockito, and PowerMock, are excellent frameworks worth mastering for every Java programmer.

Learn about Selenium and Cucumber as an end to end test. Selenium works with Headless Chrome.

5. Utility library

Most of the time, the JDK doesn’t provide much in the way of utility libraries, and we need to rely on third parties.

There are many excellent third-party libraries, such as Google’s Guava,Apache Commons package, Jackson JSON for JSON, Log4J for logging,Slf4j, and so on, which are commonly used in our daily life.

Keep learning

Finally, I want to tell you that we should Keep learning. Technological innovation is changing very fast. Only by learning all the time, can we Keep up with the lagging behind. I hope all friends can find their own way step by step. After all, there is no shortcut to knowledge.

If you are interested in the technical route, you can reply to this article and leave a message to me. I will try my best to enrich the technical route, thank you!

Finally, interested friends can I point a concern!

The END!

Author: Flydean program stuff

Link to this article: www.flydean.com

Source: Flydean’s blog

Welcome to pay attention to my public number: procedures those things, more wonderful waiting for you!