Java by Sigma
Introduction
It is usually a daunting task to know what to learn next, especially if you are beginning your journey. This guide aims to help you find relevant competence areas to focus on and suggest what to prioritize first to speed up the learning process.
Contribute
If you have any opinions or suggestions then feel free to create an issue and make sure to tag it with improvement for any new suggestions or invalid if any existing information is incorrect.
Levels
Feel free to learn whatever you want regardless of level. However be aware that a higher level suggests that you will have a harder time if you lack fundamental knowledge.
Lv.0 | You might be familiar with some concepts but lack professional experience. |
Lv.1 | You should comprehend the basics of Java. You should also be aware of the essential tools and platforms and be able to use them assuming they are setup and configured beforehand. |
Lv.2 | You should know most features of the latest Java version and be accustomed to commonly used libraries and frameworks. You are aware of multiple programming paradigms, patterns and architectures. You should also be better versed with different tools and able to setup and configure some from scratch. |
Lv.3 | You should be proficient with advanced concepts and be able to combine the right technologies and tools from an architectural perspective. |
Lv.4 | You are a master in one or more areas and an active contributor to standards and the open source community. |
Remarks
cold | Is becoming obsolete, but is still commonly used. Should be avoided for new projects. |
hot | Is either very new with great potential or widely adopted with an active community. |
recommended | Is very usefull in most situations. |
required | Necessary for any successful development project. |
Languages
-
Java Standard Edition
Lv. 1required -
Java Enterprise Edition
Lv. 2recommendedRead more: Java Enterprise Edition
Related subjects:
- Java EE Overview Level 1
- Java EE 6 Tutorial Level 2
- Java EE 7 Tutorial Level 2
- JMS Level 2
- Webservices (SOAP) Level 2
- Webservices (REST) Level 2
-
Awesome Java
Lv. 1Read more: Awesome Java
-
Kotlin
Lv. 2hotRead more: Kotlin
-
Awesome Kotlin
Lv. 1Read more: Awesome Kotlin
-
Scala
Lv. 3Read more: Scala
-
Awesome Scala
Lv. 1Read more: Awesome Scala
-
XML Schema
Lv. 3Read more: XML Schema
Functional Programming
-
Functional Programming In Java
Lv. 3recommendedRead more: Functional Programming In Java
Related subjects:
- What's Wrong with Java 8: Currying vs Closures - Pierre-Yves Saumont Level 3
- What's Wrong in Java 8, Part II: Functions & Primitives - Pierre-Yves Saumont Level 3
- What's Wrong in Java 8, Part III: Streams and Parallel Streams - Pierre-Yves Saumont Level 3
- What's Wrong in Java 8, Part IV: Monads - Pierre-Yves Saumont Level 3
- What's Wrong in Java 8, Part V: Tuples - Pierre-Yves Saumont Level 3
- What's wrong in Java 8, part VI: Strictness - Pierre-Yves Saumont Level 3
- What's wrong in Java 8, part VII: Streams again - Pierre-Yves Saumont Level 3
- Do it in Java 8: Automatic memoization - Pierre-Yves Saumont Level 3
- Folding the Universe Part I: Functional Java - Pierre-Yves Saumont Level 3
- Folding the Universe, Part II: Abstracting Recursion - Pierre-Yves Saumont Level 3
- Folding the Universe, Part III: Java 8 List and Stream - Pierre-Yves Saumont Level 3
- Functional Programming with Java 8 - Venkat Subramaniam Level 3
- Design Patterns in the Light of Lambda Expressions - Venkat Subramaniam Level 3
- Functional architecture - The pits of success - Mark Seemann Level 3
- Dysfunctional programming in Java I : Laziness functional examples - John McClean Level 3
- Dysfunctional programming in Java 2 : Immutability - John McClean Level 3
- Dysfunctional programming in Java 3 : Functional Composition - John McClean Level 3
- Dysfunctional programming in Java 4 : No nulls allowed - John McClean Level 3
- Dysfunctional programming in Java 5 : No Exceptions - John McClean Level 3
- Dysfunctional programming in Java 6 : No Locks or Synchronized Blocks - John McClean Level 3
- Dysfunctional programming in Java 7 : Immutable Collections - John McClean Level 3
- Powerful, extensible code with Tagless Final in … Java! - John McClean Level 3
-
cyclops-react
Lv. 3A comprehensive functional reactive platform for Java 8.
Read more: cyclops-react
-
Immutables
Lv. 3recommendedJava annotation processors to generate simple, safe and consistent value objects. Do not repeat yourself, try Immutables, the most comprehensive tool in this field!
Read more: Immutables
-
Lombok
Lv. 3recommendedProject Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java. Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
Read more: Lombok
-
vavr
Lv. 3recommendedVavr core is a functional library for Java 8+. It helps to reduce the amount of code and to increase the robustness.
Read more: vavr
-
Arrow (Kotlin)
Lv. 3hotFunctional companion to Kotlin's Standard Library.
Read more: Arrow (Kotlin)
Reactive Programming
-
Akka
Lv. 3Akka is a toolkit for building highly concurrent, distributed, and resilient message-driven applications for Java and Scala
Read more: Akka
-
Kafka
Lv. 3A distributed streaming platform.
Read more: Kafka
-
Project Reactor
Lv. 3Reactor is a fourth-generation Reactive library for building non-blocking applications on the JVM based on the Reactive Streams Specification.
Read more: Project Reactor
-
ReactiveX
Lv. 3An API for asynchronous programming with observable streams.
Read more: ReactiveX
-
Spring Webflux
Lv. 3Read more: Spring Webflux
Architecture
Frameworks
-
Guava
Lv. 2coldGoogle Core Libraries for Java.
Read more: Guava
-
Spring Boot
Lv. 1hot recommendedTakes an opinionated view of building production-ready Spring applications. Spring Boot favors convention over configuration and is designed to get you up and running as quickly as possible.
Read more: Spring Boot
-
Spring Framework
Lv. 1recommendedRead more: Spring Framework
-
Spring Web MVC
Lv. 2Read more: Spring Web MVC
-
OSGi
Lv. 3coldRead more: OSGi
Application Servers
-
JBoss EAP
Lv. 2recommendedRead more: JBoss EAP
-
Tomcat
Lv. 2recommendedRead more: Tomcat
-
Weblogic
Lv. 2Read more: Weblogic
-
WebSphere
Lv. 2Read more: WebSphere
-
WildFly
Lv. 2Read more: WildFly
Databases
-
SQL
Lv. 1recommendedRead more: SQL
-
MongoDB
Lv. 3Read more: MongoDB
-
neo4j
Lv. 3Read more: neo4j
-
Oracle Database
Lv. 1recommendedRead more: Oracle Database
-
PostgreSQL
Lv. 1recommendedRead more: PostgreSQL
Database Integration
-
JPA
Lv. 2requiredRead more: JPA
-
Hibernate
Lv. 2recommendedRead more: Hibernate
-
Speedment
Lv. 2hotJava Stream ORM
Read more: Speedment
Database Migration
In Memory Data
-
hazelcast
Lv. 2recommendedRead more: hazelcast
-
redis
Lv. 2recommendedRedis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster
Read more: redis
Big Data
-
Cassandra
Lv. 3Manage massive amounts of data, fast, without losing sleep
Read more: Cassandra
-
Hadoop
Lv. 3Read more: Hadoop
CMS
-
Magnolia
Lv. 3Read more: Magnolia
Integration
-
Enterprise Integration Patterns
Lv. 3Read more: Enterprise Integration Patterns
-
Mule
Lv. 3Read more: Mule
-
Camel
Lv. 3Read more: Camel
-
JPA
Lv. 2requiredRead more: JPA
-
Hibernate
Lv. 2recommendedRead more: Hibernate
-
Speedment
Lv. 2hotJava Stream ORM
Read more: Speedment
Java in the Cloud
-
Amazon Web Services (AWS)
Lv. 3Read more: Amazon Web Services (AWS)
-
Google Cloud Platform
Lv. 3Read more: Google Cloud Platform
Quality & Test
-
AssertJ
Lv. 2recommendedFluent assertions for Java.
Read more: AssertJ
-
Cucumber
Lv. 2Read more: Cucumber
-
Hoverfly
Lv. 2Hoverfly is a lightweight service virtualisation tool which allows you to stub / simulate HTTP(S) services. It is a proxy written in Go which responds to HTTP(S) requests with stored responses, pretending to be it’s real counterpart.
Read more: Hoverfly
-
JML (Java Modeling Language)
Lv. 2The Java Modeling Language (JML) is a behavioral interface specification language that can be used to specify the behavior of Java modules. It combines the design by contract approach of Eiffel and the model-based specification approach of the Larch family of interface specification languages, with some elements of the refinement calculus.
Read more: JML (Java Modeling Language)
-
jUnit
Lv. 1requiredJUnit 5 is the next generation of JUnit. The goal is to create an up-to-date foundation for developer-side testing on the JVM. This includes focusing on Java 8 and above, as well as enabling many different styles of testing.
Read more: jUnit
-
Mockito
Lv. 1recommendedMocking framework for unit tests in Java.
Read more: Mockito
-
Pact
Lv. 2recommendedPact is a contract testing tool. Contract testing is a way to ensure that services (such as an API provider and a client) can communicate with each other. Without contract testing, the only way to know that services can communicate is by using expensive and brittle integration tests.
Read more: Pact
-
PIT Mutation Testing
Lv. 1recommendedPIT is a state of the art mutation testing system, providing gold standard test coverage for Java and the jvm. It's fast, scalable and integrates with modern test and build tooling.
Read more: PIT Mutation Testing
-
REST-assured
Lv. 1Read more: REST-assured
-
Spock
Lv. 1hotSpock is a testing and specification framework for Java and Groovy applications. What makes it stand out from the crowd is its beautiful and highly expressive specification language. Thanks to its JUnit runner, Spock is compatible with most IDEs, build tools, and continuous integration servers. Spock is inspired from JUnit, RSpec, jMock, Mockito, Groovy, Scala, Vulcans, and other fascinating life forms.
Read more: Spock
-
Spotbugs
Lv. 1requiredSpotBugs is a program which uses static analysis to look for bugs in Java code.
Read more: Spotbugs
-
TestNG
Lv. 1Read more: TestNG
-
TLA+
Lv. 2TLA+ is a high-level language for modeling programs and systems--especially concurrent and distributed ones. It's based on the idea that the best way to describe things precisely is with simple mathematics. TLA+ and its tools are useful for eliminating fundamental design errors, which are hard to find and expensive to correct in code.
Read more: TLA+
-
vavr - Property Based Testing
Lv. 2recommendedRead more: vavr - Property Based Testing
-
Wiremock
Lv. 2WireMock is a simulator for HTTP-based APIs. Some might consider it a service virtualization tool or a mock server.
Read more: Wiremock
Threading, Concurrency
-
Java Concurrency
Lv. 3Read more: Java Concurrency
Containers & Instrumentation
-
Docker
Lv. 2recommendedPackage Software into Standardized Units for Development, Shipment and Deployment.
Read more: Docker
-
Jib
Lv. 2recommendedJib builds optimized Docker and OCI images for your Java applications without a Docker daemon - and without deep mastery of Docker best-practices. It is available as plugins for Maven and Gradle and as a Java library.
Read more: Jib
-
Kubernetes
Lv. 2recommendedKubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications.
Read more: Kubernetes
-
Quarkus
Lv. 2recommendedA Kubernetes Native Java stack tailored for GraalVM & OpenJDK HotSpot, crafted from the best of breed Java libraries and standards.
Read more: Quarkus
-
Testcontainers
Lv. 2recommendedTestcontainers is a Java library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
Read more: Testcontainers
Tooling
-
Git
Lv. 1recommendedRead more: Git
-
GitHub
Lv. 1Read more: GitHub
-
GitLab
Lv. 1Read more: GitLab
-
Bitbucket
Lv. 1Read more: Bitbucket
-
Mercurial
Lv. 1Read more: Mercurial
-
Maven
Lv. 1recommendedRead more: Maven
Related subjects:
- Maven - Getting started Level 1
- Understanding Maven Version Numbers Level 1
- Maven Wrapper Level 1
-
Gradle
Lv. 1recommended -
Jenkins
Lv. 1Read more: Jenkins
-
Eclipse
Lv. 1Read more: Eclipse
-
IntelliJ
Lv. 1Read more: IntelliJ
Operating Systems
-
Linux / Unix
Lv. 1Read more: Linux / Unix
-
Windows
Lv. 1Read more: Windows
Books
-
Clean Code
Lv. 1recommendedRead more: Clean Code
-
Design Patterns (GOF)
Lv. 2recommendedRead more: Design Patterns (GOF)
-
Effective Java Third Edition
Lv. 2recommendedRead more: Effective Java Third Edition
Patterns
-
MVC-pattern
Lv. 1Read more: MVC-pattern
Modelling
-
UML
Lv. 2Read more: UML
Mobile
-
Android
Lv. 2Read more: Android