Java SE

About

Java SE (Standard Edition) is the foundational platform of the Java ecosystem. It provides the core functionality required for developing and running Java applications on desktops, servers, and embedded environments.

  • Purpose: Java SE provides the standard APIs and tools to write and run general-purpose applications in Java.

  • Base for: Java EE (Jakarta EE), JavaFX, Android (indirectly), and many frameworks like Spring and Hibernate.

  • Released by: Originally by Sun Microsystems, now maintained by Oracle and OpenJDK community.

Java SE Versions Timeline

Version

Release Date

Notable Feature(s)

Java 1.0

1996

First public release

Java 1.2

1998

Collections Framework

Java 5

2004

Generics, Annotations, Enums

Java 8

2014

Lambdas, Streams, Date/Time

Java 11

2018

LTS, modern APIs

Java 17

2021

LTS, Sealed classes, Records

Java 21

2023

Virtual threads (LTS)

Core Components

Java Development Kit (JDK)

  • Includes:

    • javac: Java compiler

    • java: JVM launcher

    • javadoc: Documentation generator

    • jdb: Debugger

    • jshell: REPL (since Java 9)

    • Other tools: jar, jarsigner, jlink, jdeps, jmod, etc.

Java Runtime Environment (JRE)

  • A subset of JDK

  • Includes JVM and standard class libraries

  • Note: JRE is no longer distributed separately from Java 11 onward.

Java Virtual Machine (JVM)

  • Executes Java bytecode (.class files)

  • Handles memory management, garbage collection, JIT compilation, and runtime optimizations

  • Platform-specific implementation with consistent bytecode interpretation

Core Libraries (Packages)

Key Packages:

  • java.lang: Fundamental classes (String, Math, Object, System, Thread, etc.)

  • java.util: Collections, Date/Time, Random, Optional, etc.

  • java.io / java.nio: Input/Output APIs (stream-based and buffer-based)

  • java.net: Networking (sockets, HTTP clients, URLs)

  • java.sql: JDBC APIs for database connectivity

  • java.time: Date/Time API (since Java 8)

  • java.math: BigDecimal, BigInteger

  • java.util.concurrent: Concurrency utilities (Executors, Future, Locks)

  • java.security: Cryptographic and permission APIs

  • java.lang.reflect: Reflection support

  • javax.*: Legacy APIs included in SE (e.g., javax.crypto, javax.net.ssl, javax.naming) — before being moved or deprecated

Licensing

  • Oracle JDK (Post-Java 8): Commercial use restrictions unless using LTS with proper license

  • OpenJDK: GPLv2 with Classpath Exception

  • Alternative builds:

    • Amazon Corretto

    • Azul Zulu

    • Eclipse Temurin (Adoptium)

    • Red Hat OpenJDK

Development Environments

  • Popular IDEs: IntelliJ IDEA, Eclipse, NetBeans, VS Code (with extensions)

  • Build Tools:

    • Maven

    • Gradle

    • Ant (legacy)

Deployment Methods

  • JAR Files (.jar)

  • Native images (via GraalVM)

  • Platform-specific installers (JPackage)

Use Cases

  • Desktop applications (Swing, JavaFX)

  • Command-line tools

  • Server-side components

  • Embedded software (with constrained environments)

  • Backend microservices (Spring Boot, Quarkus, Micronaut)

Last updated

Was this helpful?