close
eBook – Guide Spring Cloud – NPI EA (cat=Spring Cloud)
announcement - icon

Let's get started with a Microservice Architecture with Spring Cloud:

>> Join Pro and download the eBook

eBook – Mockito – NPI EA (tag = Mockito)
announcement - icon

Mocking is an essential part of unit testing, and the Mockito library makes it easy to write clean and intuitive unit tests for your Java code.

Get started with mocking and improve your application tests using our Mockito guide:

Download the eBook

eBook – Java Concurrency – NPI EA (cat=Java Concurrency)
announcement - icon

Handling concurrency in an application can be a tricky process with many potential pitfalls. A solid grasp of the fundamentals will go a long way to help minimize these issues.

Get started with understanding multi-threaded applications with our Java Concurrency guide:

>> Download the eBook

eBook – Reactive – NPI EA (cat=Reactive)
announcement - icon

Spring 5 added support for reactive programming with the Spring WebFlux module, which has been improved upon ever since. Get started with the Reactor project basics and reactive programming in Spring Boot:

>> Join Pro and download the eBook

eBook – Java Streams – NPI EA (cat=Java Streams)
announcement - icon

Since its introduction in Java 8, the Stream API has become a staple of Java development. The basic operations like iterating, filtering, mapping sequences of elements are deceptively simple to use.

But these can also be overused and fall into some common pitfalls.

To get a better understanding on how Streams work and how to combine them with other language features, check out our guide to Java Streams:

>> Join Pro and download the eBook

eBook – Jackson – NPI EA (cat=Jackson)
announcement - icon

Do JSON right with Jackson

Download the E-book

eBook – HTTP Client – NPI EA (cat=Http Client-Side)
announcement - icon

Get the most out of the Apache HTTP Client

Download the E-book

eBook – Maven – NPI EA (cat = Maven)
announcement - icon

Get Started with Apache Maven:

Download the E-book

eBook – Persistence – NPI EA (cat=Persistence)
announcement - icon

Working on getting your persistence layer right with Spring?

Explore the eBook

eBook – RwS – NPI EA (cat=Spring MVC)
announcement - icon

Building a REST API with Spring?

Download the E-book

Course – LS – NPI EA (cat=Jackson)
announcement - icon

Get started with Spring and Spring Boot, through the Learn Spring course:

>> LEARN SPRING
Course – RWSB – NPI EA (cat=REST)
announcement - icon

Explore Spring Boot 3 and Spring 6 in-depth through building a full REST API with the framework:

>> The New “REST With Spring Boot”

Course – LSS – NPI EA (cat=Spring Security)
announcement - icon

Yes, Spring Security can be complex, from the more advanced functionality within the Core to the deep OAuth support in the framework.

I built the security material as two full courses - Core and OAuth, to get practical with these more complex scenarios. We explore when and how to use each feature and code through it on the backing project.

You can explore the course here:

>> Learn Spring Security

Course – LSD – NPI EA (tag=Spring Data JPA)
announcement - icon

Spring Data JPA is a great way to handle the complexity of JPA with the powerful simplicity of Spring Boot.

Get started with Spring Data JPA through the guided reference course:

>> CHECK OUT THE COURSE

Partner – Moderne – NPI EA (cat=Spring Boot)
announcement - icon

Refactor Java code safely — and automatically — with OpenRewrite.

Refactoring big codebases by hand is slow, risky, and easy to put off. That’s where OpenRewrite comes in. The open-source framework for large-scale, automated code transformations helps teams modernize safely and consistently.

Each month, the creators and maintainers of OpenRewrite at Moderne run live, hands-on training sessions — one for newcomers and one for experienced users. You’ll see how recipes work, how to apply them across projects, and how to modernize code with confidence.

Join the next session, bring your questions, and learn how to automate the kind of work that usually eats your sprint time.

Course – LJB – NPI EA (cat = Core Java)
announcement - icon

Code your way through and build up a solid, practical foundation of Java:

>> Learn Java Basics

1. Overview

Java is one of the most popular programming languages worldwide. It was created by James Gosling and Patrick Naughton, employees of Sun Microsystems, with support from Bill Joy, co-founder of Sun Microsystems.

Sun officially presented the Java language at SunWorld on May 23, 1995. Then, in 2009, the Oracle company bought the Sun company, which explains why the language now belongs to Oracle.

In this article, we’ll explore the history of the Java programming language.

2. What Is Java?

Java is described as being a multi-purpose, strongly typed, and Object-Oriented Programming (OOP) language. By design, it has as few implementation dependencies as possible.

With this programming language, we can create applications on multiple devices. Its scope is very wide, allowing us to create software for mobile devices, point of sale terminals, ATMs, IoT (Internet of Things), as well as web pages.

Although Kotlin is the preferred language for Android development in 2021, Java is still the default language for developing apps for Android. The big reason for that is Android’s tight integration with Java. In fact, parts of that OS, like the UI and specific core libraries, are written in Java.

3. Brief History

Let’s dive in to take a look at how the Java project started and evolved through time.

3.1. The Beginning

The project was born in 1991, behind the scenes of a Sun Microsystems team, when three engineers, James Gosling, Mike Sheridan, and Patrick Naughton sought to design a language applicable to small electrical devices.

Soon after, they launched the Green Project to study the impact of convergence between digitally controlled home appliances and computers.

Using a syntax similar to that of C++, they made a digital remote control, equipped with a graphic and animated touch screen. The fruit of several months of intense research, this remote control had the fantastic feature of controlling a whole living room equipment. It was programmed in a new language, completely independent of the processor it was running on, making the remote one-of-a-kind.

Ultimately, it was James Gosling, one of the members of the Green Project, who originated this new language, which he called Oak.

Afterward, the project gained ground when American cable operators joined the project. Oak then became FirstPerson. Unfortunately, the FirstPerson project had no commercial success, as it was certainly too far ahead of the industry, whose priority was, above all, profitability.

3.2. The Arrival of the HTTP Protocol and the Mosaic Browser

In 1993, the HTTP protocol and the Mosaic browser arrived, which was a crucial event for the project. During this time, the team realized that the Internet would be the ideal network to position their product.

Then, in 1995, James Gosling unveiled a browser called WebRunner that was capable of showing HTML content mixed with Applets. Things took off from there. First, WebRunner became HotJava, then java.sun.com officially opened to the public.

Eventually, the name of this technology would become “Java” (meaning “coffee” in American slang), in honor of the programmer’s favorite drink, namely coffee, part of the production of which comes from the island of Java.

It was then that Sun and Netscape announced their desire to integrate this new technology into their browsers, which definitively launched the language. The versions would then follow one another from version 1 in 1996 to version 17 in 2021.

4. Features

Thanks to its excellent features, Java has become a popular and useful programming language. Sun characterized it as being:

  • Compiled and Interpreted
  • Platform Independent and Portable
  • Object-Oriented
  • Robust and Secure
  • Distributed
  • Familiar, Simple and Small
  • Multi-threaded and Interactive
  • High Performance
  • Dynamic and Extensible

Source: “Programming with Java” – E Balagurusamy.

Next, we’ll detail each of these features.

4.1. Compiled and Interpreted

Java combines the power of compiled languages with the flexibility of interpreted languages.

The compiler (javac) compiles the source code into bytecode, then the Virtual Machine (JVM) executes this bytecode by transforming it into machine-readable code.

4.2. Platform Independent and Portable

The two-step compilation process is what lies behind Java’s most significant feature: platform independence, which allows for portability.

Being platform-independent means a program compiled on one machine can be executed on any other machine, regardless of the OS, as long as there is a JVM installed.

The portability feature refers to the ability to run a program on different machines. In fact, the same code will run identically on different platforms, regardless of hardware compatibility or operating systems, with no changes such as recompilation or tweaks to the source code.

4.3. Object-Oriented

Java strongly supports Object-Oriented Programming concepts such as encapsulation, abstraction, and inheritance.

All the instructions and data in a Java program have to be added inside a class or object.

4.4. Robust and Secure

Java includes several useful features that help us write robust and secure applications.

One of the most important ones is the memory management system, along with automatic garbage collection. Compared to languages like C/C++, Java avoids the concept of explicit pointers, and doesn’t require programmers to manually manage the allocated memory.

Instead, the GC will take care of deleting unused objects to free up memory.

In addition, Java is a strongly-typed language, which is a feature that can help lower the number of bugs in an application, and provides error handling mechanisms.

4.5. Distributed

This feature is helpful when we develop large projects. We can split a program into many parts and store these parts on different computers. As a result, we can easily create distributed and scalable applications that run on multiple nodes.

We can achieve this using the concept of RMI (Remote Method Invocation) and EJB (Enterprise JavaBeans).

4.6. Simple and Familiar

First, Java is simple thanks to its coding style, which is very clean and easy to understand. Also, it doesn’t use complex and difficult features of other languages, such as the concept of explicit pointers.

Finally, Java is familiar since it’s based on existing languages like C++ and incorporates many features from these languages.

4.7. Multi-Threaded and Interactive

Also known as Thread-based Multitasking, multithreading is a feature that allows executing multiple threads simultaneously.

In short, we can write Java programs that deal with many tasks at once by defining multiple threads. The advantage of multithreading is that it doesn’t occupy memory for each thread – all threads share a common memory area.

4.8. High Performance

Bytecodes that the compiler generates are highly optimized, so the Virtual Machine can execute them much faster. This is why Java is faster than other traditional interpreted programming languages.

4.9. Dynamic and Extensible

This feature gives the facility of dynamically linking new class libraries, methods, and objects. Java is highly dynamic as it can adapt to its evolving environment.

5. Usefulness of Java Runtime Environment

To be able to run a software application, it must have an environment that allows it to function – typically, an operating system such as Linux, Unix, Microsoft Windows, or macOS. In the absence of other supporting environments, programs are limited by the capabilities of the operating system and its resources.

The Java Runtime Environment (JRE) acts as a translator and facilitator between the program and the operating system. It runs on top of the operating system to provide additional Java-specific resources.

6. Conclusion

Through all its specificities, the Java language synthesizes a large part of other existing languages’ possibilities while erasing some of their main faults.

It is, therefore, a language commonly recognized as being relatively modern, and whose potential is well established.

Baeldung Pro – NPI EA (cat = Baeldung)
announcement - icon

Baeldung Pro comes with both absolutely No-Ads as well as finally with Dark Mode, for a clean learning experience:

>> Explore a clean Baeldung

Once the early-adopter seats are all used, the price will go up and stay at $33/year.

eBook – HTTP Client – NPI EA (cat=HTTP Client-Side)
announcement - icon

The Apache HTTP Client is a very robust library, suitable for both simple and advanced use cases when testing HTTP endpoints. Check out our guide covering basic request and response handling, as well as security, cookies, timeouts, and more:

>> Download the eBook

eBook – Java Concurrency – NPI EA (cat=Java Concurrency)
announcement - icon

Handling concurrency in an application can be a tricky process with many potential pitfalls. A solid grasp of the fundamentals will go a long way to help minimize these issues.

Get started with understanding multi-threaded applications with our Java Concurrency guide:

>> Download the eBook

eBook – Java Streams – NPI EA (cat=Java Streams)
announcement - icon

Since its introduction in Java 8, the Stream API has become a staple of Java development. The basic operations like iterating, filtering, mapping sequences of elements are deceptively simple to use.

But these can also be overused and fall into some common pitfalls.

To get a better understanding on how Streams work and how to combine them with other language features, check out our guide to Java Streams:

>> Join Pro and download the eBook

eBook – Persistence – NPI EA (cat=Persistence)
announcement - icon

Working on getting your persistence layer right with Spring?

Explore the eBook

Course – LS – NPI EA (cat=REST)

announcement - icon

Get started with Spring Boot and with core Spring, through the Learn Spring course:

>> CHECK OUT THE COURSE

Partner – Moderne – NPI EA (tag=Refactoring)
announcement - icon

Modern Java teams move fast — but codebases don’t always keep up. Frameworks change, dependencies drift, and tech debt builds until it starts to drag on delivery. OpenRewrite was built to fix that: an open-source refactoring engine that automates repetitive code changes while keeping developer intent intact.

The monthly training series, led by the creators and maintainers of OpenRewrite at Moderne, walks through real-world migrations and modernization patterns. Whether you’re new to recipes or ready to write your own, you’ll learn practical ways to refactor safely and at scale.

If you’ve ever wished refactoring felt as natural — and as fast — as writing code, this is a good place to start.

Course – LS – NPI (cat=Java)
announcement - icon

Get started with Spring Boot and with core Spring, through the Learn Spring course:

>> CHECK OUT THE COURSE

eBook Jackson – NPI EA – 3 (cat = Jackson)
1 Comment
Oldest
Newest
Inline Feedbacks
View all comments