Code Monkey home page Code Monkey logo

javaroadmap's Introduction

2024 Java Developer Roadmap

The roadmap has been made using the Mac Keynote application. To make any changes you'll need an Apple computer and Keynote.

Disclaimer

By no means do you need to understand (or use) everything on this roadmap to become a rockstar Java developer. Use this roadmap as a starting point to help guide your learning as you go and add your own software components while your experience grows!

History

2023 Java Developers Roadmap

javaroadmap's People

Contributors

stephanj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

javaroadmap's Issues

Hibernate is not a framework

It is the JPA reference implementation and therefore should be part of database persistence and as part of the database node

Add Jakarta EE Main Node

Under JDK, I think there should has a Node Jakarta EE to cover all Jakarta EE sepc and popular implementations.

  • Servlet -> Apache Tomcat, Eclipse Jetty
  • Faces -> Eclipse EE4J Mojarra, Apache MyFaces, Omnifaces Utilities
  • Rest -> RedHat Resteasy, Eclipse EE4J Jersey
  • CDI -> Weld, Apache OpenBeans
  • Persistence -> EclipseLink, Hibernate, (Apache OpenJPA, DataNucleus is not active)
  • Validation -> Hibernate Validator
  • Data -> EclipseLink, Hibernate
  • Messaging -> Eclipse OpenMQ, Apache ActiveMQ Artemis
  • Security -> Eclipse Soteria
  • JSONP/JSONB -> Eclipse JSONB/JSONP, Apache Johnzon
  • Concurrency
  • Transaction
  • Mail/Activation
  • Expression Language - Eclipse ExpressLy

Jakarta EE includes three profiles to categorize the above spec into different group:

  • Platform
  • Web Profile
  • Core Profile

MicroProfile should be a sister project of Jakarta EE, it is based on Jakarta EE Core Profile, and currently almost all products use RedHat SmallRye implementations.

  • Config
  • JWT
  • Reactive Messaging
  • RestClient
  • Telemetry/Metrics/Health
  • OpenAPI
  • etc

The Jakarta EE runtimes/implementers include:

  • Glassfish
  • WildFLy
  • OpenLiberty
  • Apache TomEE
  • Payara(an early fork from GlassFish, open source and commercial support)

Testing tools.

  • Arquillian
  • Rest Assured
  • MicroShed
  • WireMock
  • Pact(CDC testing, Spring Cloud has a project named Spring Cloud Contract)

The derived projects and frameworks.

  • Spring 6 traditional WebMvc aligned to Jakarta EE 9/10+
  • Quarkus supports Jakarta EE 10 + MicroProfile
  • Helidon supports partial Jakarta EE 10 + MicroProfile
  • Micronaunt 4 has already aligned to Jakarta EE 10 and move to jakarta namespace.

Correct the Jakarta EE Spec Naming

There are a few names in the image are out of date and could mislead new developers.

  • JSF -> Jakarta Faces
  • JMS -> Jakarta Messaging
  • JPA -> Jakarta Persistence

Reorginze *Reactive Programming* tree

The reactive streams define the spec, but Java 9 copies the Java API into its java.util.concurrent.Flow, the content is the same, but the package name is different.

The popular libs that implement Reactive Streams spec include:

  • Reactor -> Spring WebFlux supports it by default, also supports others. The Mono&Flux is just reactor-specific APIs
  • RxJava3 -> Vertx, Micronaut supports it.
  • SmallRye Mutiny -> Quarkus supports it by default, also supports rxjava3, etc.

Java Flow(since Java 9) -> Including a simple Publisher implementation, the newest SmallRye Munity switches to Java Flow API.

Remove OpenJPA

Apache OpenJPA is not so active these years and is not aligned to the latest JPA 3.2.

BTW, from Jakarta EE naming, we call JPA Jakarta Persistence today.

Refactor GraphQL/REST etc.

Similar to WebSocket, SSE... GraphQL, REST, RSocket and gRPC, etc. should be belong to the domain of client/server communication protocol.

  • GraphQL can be implemented by HTTP, WebSocket, SSE, RSocket, etc.
    • Spring GraphQL
    • Netflix Dgs framework
    • Vertx, Quarkus, and Micronaut have built-in GraphQL supports, including the client and server side.
  • Spring WebFlux includes RSocket protocol supports(client/server), and Spring GraphQL includes a Rsocket implementation of GraphQL.
  • Spring RSocket can be implemented by Websockets/HTTP, unlike general web applications, a Spring Rsocket server can be opened via a TCP port without a web environment.

Remove SOAP

The SOAP-based web service was removed from Jakarta EE spec.

I do not think in 2024 it is still valuable for new Java developers.

Remove Web3

The Blockchain community initiates Web3, it is not illegal for many countries. It should not be part of a Java learning path.

OpenLiberty as part of the roadmap

Suggesting to include OpenLiberty as Possibilities in the roadmap. IMHO, the framework utilizes Microprofile and JakartaEE. Most of the people using IBM Java Tech Stack are using this framework.

Add Vertx SQL Client as a brother of R2dbc/Jdbc

Vertx SQL Client is another reactive client that is used to connect to the RDBMS.

  • Hibernate Reactive is based on Vertx SQL Client, and Hibernate Reactive support is included in Micronaut and Quarkus
  • Quarkus also Vertx SQL Client or variants implementation of Mutiny.
  • Vertx supports Vertx SQL Client and varaints of RxJava2/3, SmallRye Mutiny.
  • Micronaut also supports Vertx SQL Client and its variants.

BTW, Vertx includes a collection of its own Async API by default.

Microprofile and Microservices

Microprofile is a collection of specs and ready for Microservices.

Helidon includes the implementation of Microprofile, also includes reactive and functional stacks.

Quarkus also includes several Microprofile spec supports.

Spring Boot, Micronaut, Quarkus, Helidon have native build supports, but I am not here Spring Native what it means.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.