Mikä on Java?

 

Java on ohjelmointikieli ja alusta (platform), jota käytetään laajasti erityisesti yrityssovelluksissa, backend-palveluissa, mobiilikehityksessä (Android), integraatioissa, pankki- ja vakuutusjärjestelmissä sekä suurissa tietojärjestelmissä.

 

Java koostuu käytännössä kolmesta pääosasta:

                  •               Ohjelmointikieli (Java-koodi, esim. class, interface, public static void main)

                  •               JVM (Java Virtual Machine), joka suorittaa Java-ohjelmia

                  •               Standardikirjastot (Java API), joilla tehdään mm. verkkoyhteydet, tiedostot, tietorakenteet, tietokannat jne.

 

Java on tunnettu erityisesti:

                  •               hyvästä suorituskyvystä (JIT, modernit JVM:t)

                  •               vakaudesta ja pitkästä elinkaaresta

                  •               laajasta ekosysteemistä

                  •               vahvasta tyypityksestä ja turvallisuudesta

                  •               siitä, että sama ohjelma toimii useilla käyttöjärjestelmillä (”write once, run anywhere”)

 

 

Java-frameworkit ja työkalut (mahdollisimman laaja lista)

 

Alla on laaja jaottelu eri kategorioihin.

 

 

1) Backend- ja web-frameworkit

 

Spring-ekosysteemi

                  •               Spring Framework

                  •               Spring Boot

                  •               Spring MVC

                  •               Spring WebFlux

                  •               Spring Security

                  •               Spring Data

                  •               Spring Data JPA

                  •               Spring Data JDBC

                  •               Spring Data MongoDB

                  •               Spring Data Redis

                  •               Spring Data Elasticsearch

                  •               Spring Cloud

                  •               Config

                  •               Gateway

                  •               OpenFeign

                  •               Eureka

                  •               Circuit Breaker (Resilience4j integraatiot)

                  •               Spring Batch

                  •               Spring Integration

                  •               Spring AMQP

                  •               Spring for Apache Kafka

                  •               Spring GraphQL

                  •               Spring HATEOAS

                  •               Spring Actuator

 

Jakarta EE / Java EE -ekosysteemi

                  •               Jakarta EE

                  •               JAX-RS (REST API:t)

                  •               JAX-WS (SOAP)

                  •               CDI (Dependency Injection)

                  •               EJB (Enterprise Java Beans)

                  •               JPA (ORM)

                  •               JSF (JavaServer Faces)

                  •               JMS (Messaging)

                  •               Servlet API

                  •               JSP

                  •               Bean Validation

                  •               Jakarta Security

 

Jakarta EE -sovelluspalvelimet / runtimet

                  •               WildFly

                  •               JBoss EAP

                  •               Payara Server

                  •               GlassFish

                  •               Open Liberty

                  •               Apache TomEE

                  •               Eclipse Jetty (myös servlet-container)

                  •               Apache Tomcat (servlet-container)

 

Muut web-frameworkit

                  •               Micronaut

                  •               Quarkus

                  •               Dropwizard

                  •               Javalin

                  •               Spark Java

                  •               Vert.x

                  •               Helidon

                  •               Play Framework

                  •               Restlet

                  •               Vaadin (UI + server-side web)

                  •               Struts (Apache Struts) (vanhempi mutta tunnettu)

                  •               Wicket

                  •               GWT (Google Web Toolkit) (historiallinen mutta yhä käytössä joissain)

                  •               Blade

                  •               Ratpack

                  •               Ktor (Kotlin-painotteinen, mutta JVM-ekosysteemi)

 

 

2) API-teknologiat (REST, GraphQL, RPC)

 

REST

                  •               Spring MVC / WebFlux

                  •               JAX-RS (Jersey, RESTEasy)

                  •               Retrofit (client)

                  •               OkHttp (client)

                  •               Feign / OpenFeign

 

GraphQL

                  •               Spring GraphQL

                  •               graphql-java

                  •               Netflix DGS

                  •               Apollo (client puolella, ei Java-keskeinen)

 

gRPC / RPC

                  •               gRPC Java

                  •               Apache Thrift

                  •               Avro RPC

                  •               RSocket

 

 

3) ORM, tietokantakerrokset ja tietokantatyökalut

 

ORM / Data Access

                  •               Hibernate

                  •               EclipseLink

                  •               OpenJPA

                  •               MyBatis

                  •               jOOQ

                  •               Spring Data JPA

                  •               Spring JDBC

                  •               JDBI

                  •               QueryDSL

                  •               Doma

                  •               ORMLite

                  •               Exposed (Kotlin, JVM)

 

Tietokantamigraatiot

                  •               Flyway

                  •               Liquibase

 

Yhteysaltaat (connection pool)

                  •               HikariCP

                  •               Apache DBCP

                  •               c3p0

 

 

4) Testausframeworkit ja testityökalut

 

Unit-testit

                  •               JUnit 5

                  •               JUnit 4

                  •               TestNG

 

Mockaus

                  •               Mockito

                  •               EasyMock

                  •               JMock

                  •               MockK (Kotlin/JVM)

 

Integraatio- ja end-to-end

                  •               Spring Test

                  •               Testcontainers

                  •               RestAssured

                  •               WireMock

                  •               Hoverfly

                  •               Karate

                  •               Cucumber JVM

                  •               Selenium

                  •               Selenide

                  •               Playwright for Java

                  •               Appium (Java client)

 

Suorituskykytestaus

                  •               JMH (Java Microbenchmark Harness)

                  •               Gatling (Scala/JVM)

                  •               JMeter

 

 

5) Build-, dependency- ja projektityökalut

                  •               Maven

                  •               Gradle

                  •               Ant

                  •               Bazel

                  •               SBT (JVM, enemmän Scala)

                  •               Ivy

                  •               JitPack (julkaisukanava)

                  •               Nexus Repository

                  •               JFrog Artifactory

 

 

6) IDE:t ja kehitysympäristöt

                  •               IntelliJ IDEA

                  •               Eclipse IDE

                  •               NetBeans

                  •               VS Code (Java Extensions)

 

 

7) Koodin laatu, analyysi ja staattinen tarkastus

                  •               Checkstyle

                  •               PMD

                  •               SpotBugs (FindBugs jatkaja)

                  •               Error Prone

                  •               SonarQube

                  •               SonarLint

                  •               ArchUnit

                  •               OWASP Dependency-Check

                  •               Snyk

                  •               Semgrep

                  •               Qodana (JetBrains)

 

 

8) Lokitus ja observability

 

Lokitus

                  •               SLF4J

                  •               Logback

                  •               Log4j2

                  •               java.util.logging (JUL)

 

Metrics / tracing / observability

                  •               Micrometer

                  •               OpenTelemetry Java

                  •               Prometheus Java client

                  •               Zipkin

                  •               Jaeger

                  •               Grafana

                  •               Elastic APM agent

                  •               Datadog Java agent

                  •               New Relic Java agent

 

 

9) Dependency Injection (DI) ja modulaarisuus

                  •               Spring DI

                  •               CDI (Weld, OpenWebBeans)

                  •               Google Guice

                  •               Dagger (yleisempi Androidissa)

                  •               PicoContainer (vanha)

 

Modulaarisuus

                  •               JPMS (Java Platform Module System)

                  •               OSGi

                  •               Apache Felix

                  •               Equinox

                  •               Knopflerfish

 

 

10) HTTP-clientit ja verkkokirjastot

                  •               Java 11+ HttpClient

                  •               Apache HttpClient

                  •               OkHttp

                  •               Retrofit

                  •               AsyncHttpClient

                  •               Netty

                  •               Jetty HTTP client

 

 

11) Messaging, event streaming ja integraatiot

 

Message broker -integraatiot

                  •               Apache Kafka

                  •               Kafka Clients

                  •               Spring for Apache Kafka

                  •               RabbitMQ

                  •               Spring AMQP

                  •               ActiveMQ

                  •               Artemis

                  •               JMS API

                  •               NATS Java

                  •               Pulsar Java

                  •               RocketMQ

 

Integraatioframeworkit

                  •               Apache Camel

                  •               Spring Integration

                  •               Mule ESB

                  •               WSO2 (osittain Java-pohjainen)

 

 

12) Batch, schedulerit ja työnjonot

                  •               Spring Batch

                  •               Quartz Scheduler

                  •               JobRunr

                  •               XXL-JOB (harvinaisempi)

                  •               Elastic-job

 

 

13) Security, auth ja kryptografia

                  •               Spring Security

                  •               Keycloak adapters

                  •               Nimbus JOSE + JWT

                  •               jjwt

                  •               Bouncy Castle

                  •               Apache Shiro

                  •               PAC4J

                  •               OWASP ESAPI

                  •               SAML libraries (OpenSAML)

 

 

14) Serialisointi ja dataformaatit

 

JSON

                  •               Jackson

                  •               Gson

                  •               JSON-B (Jakarta)

                  •               Moshi (JVM)

 

XML

                  •               JAXB

                  •               XStream

                  •               DOM / SAX / StAX

 

Muut

                  •               Protocol Buffers (protobuf-java)

                  •               Apache Avro

                  •               MessagePack

                  •               CBOR

                  •               Kryo

 

 

15) Frontend / UI (Java-pohjaiset)

 

Desktop UI

                  •               JavaFX

                  •               Swing

                  •               AWT

 

Web UI (server-side)

                  •               Vaadin

                  •               JSF

                  •               Wicket

                  •               GWT

 

 

16) Android-kehitys (Java + JVM)

                  •               Android SDK

                  •               Gradle Android Plugin

                  •               Jetpack (enimmäkseen Kotlin, mutta JVM)

                  •               Retrofit

                  •               Room

                  •               Dagger

                  •               Hilt

                  •               Espresso

                  •               Robolectric

 

 

17) Cloud & container -ekosysteemi (Java-työkalut)

                  •               Docker

                  •               Kubernetes

                  •               Helm

                  •               Spring Cloud Kubernetes

                  •               Quarkus Kubernetes extensions

                  •               Jib (container image build ilman Dockerfileä)

                  •               Buildpacks (Paketo)

                  •               Terraform (ei Java, mutta käytössä Java-projekteissa)

                  •               AWS SDK for Java

                  •               Google Cloud Java SDK

                  •               Azure SDK for Java

 

 

18) CI/CD ja DevOps (Java-projektien yleiset)

                  •               GitHub Actions

                  •               GitLab CI

                  •               Jenkins

                  •               TeamCity

                  •               CircleCI

                  •               Bamboo

                  •               ArgoCD (Kubernetes)

                  •               Spinnaker

 

 

19) Performance, profiling ja JVM-työkalut

                  •               JFR (Java Flight Recorder)

                  •               JMC (Java Mission Control)

                  •               VisualVM

                  •               YourKit

                  •               JProfiler

                  •               Async-profiler

                  •               jstack, jmap, jcmd, jstat

                  •               GC-log analyzers

                  •               GCViewer

                  •               GCEasy

 

 

20) Reactive / async / concurrency

                  •               Project Reactor

                  •               RxJava

                  •               Akka (JVM)

                  •               CompletableFuture (JDK)

                  •               Virtual Threads (Project Loom, Java 21+)

                  •               Netty

                  •               Vert.x

 

 

21) Template-engine ja view-kerros

                  •               Thymeleaf

                  •               Freemarker

                  •               Velocity

                  •               Mustache.java

                  •               JSP

                  •               Handlebars.java

 

 

22) Dokumentaatio ja API-dokumentointi

                  •               Swagger / OpenAPI

                  •               Springdoc OpenAPI

                  •               Swagger Core

                  •               AsciiDoc

                  •               MkDocs (ei Java, mutta käytössä)

                  •               Javadoc

 

 

23) Logging, auditointi ja tracing (lisää)

                  •               MDC (SLF4J)

                  •               Logstash encoder

                  •               Elastic Stack integraatiot

                  •               OpenTelemetry instrumentation libraries

 

 

24) Säännöt, validointi ja business rule -moottorit

                  •               Hibernate Validator

                  •               Jakarta Bean Validation

                  •               Drools

                  •               Easy Rules

                  •               Camunda DMN

                  •               jBPM

 

 

25) BPM, workflow ja prosessimoottorit

                  •               Camunda

                  •               Flowable

                  •               jBPM

                  •               Activiti

 

 

26) Hakukoneet ja indeksointi

                  •               Elasticsearch Java client

                  •               OpenSearch Java client

                  •               Apache Lucene

                  •               Hibernate Search

 

 

27) Big Data ja distributed computing (JVM/Java)

                  •               Apache Hadoop

                  •               Apache Spark (Scala-painotteinen, mutta JVM)

                  •               Apache Flink

                  •               Apache Beam

                  •               Apache Storm

                  •               Kafka Streams

                  •               Samza

 

 

28) Cache ja in-memory

                  •               Caffeine

                  •               Ehcache

                  •               Hazelcast

                  •               Infinispan

                  •               Redis clients

                  •               Lettuce

                  •               Jedis

                  •               Redisson

 

 

29) PDF, raportointi ja dokumenttigenerointi

                  •               iText

                  •               Apache PDFBox

                  •               JasperReports

                  •               BIRT

                  •               Flying Saucer (HTML -> PDF)

 

 

30) Email, templating ja viestintä

                  •               Jakarta Mail

                  •               Apache Commons Email

                  •               Spring Mail

 

 

31) Utility-kirjastot (yleiskäyttö)

                  •               Apache Commons

                  •               Commons Lang

                  •               Commons IO

                  •               Commons Collections

                  •               Commons Codec

                  •               Google Guava

                  •               Vavr

                  •               Lombok

                  •               MapStruct

                  •               ModelMapper

                  •               Reflections

                  •               Joda-Time (historiallinen)

 

 

32) Versionhallinta ja yhteistyö (yleisesti Java-projekteissa)

                  •               Git

                  •               Subversion (SVN) (vanhempi)

                  •               Mercurial (harvinaisempi)

 

 

33) Java-versiot ja JDK-jakelut (työkalutaso)

                  •               Oracle JDK

                  •               OpenJDK

                  •               Eclipse Temurin

                  •               Amazon Corretto

                  •               Azul Zulu

                  •               GraalVM

                  •               Liberica JDK

 

 

34) GraalVM ja native image -työkalut

                  •               GraalVM Native Image

                  •               Quarkus (native)

                  •               Micronaut (native)

                  •               Spring Native / AOT (Spring Boot 3+)

 

 

35) Pelikehitys (Java)

                  •               LibGDX

                  •               jMonkeyEngine

                  •               LWJGL

 

 

36) Finanssi- ja enterprise-integraatioissa yleisiä (Java)

                  •               Apache CXF (SOAP + REST)

                  •               WS-Security

                  •               ISO 20022 kirjastot (domain-kohtaisia)

                  •               FIX-protokolla kirjastot (QuickFIX/J)

 

 

Yhteenveto

 

Java on sekä ohjelmointikieli että kokonainen ekosysteemi, jota käytetään erityisesti backend-palveluissa, yritysjärjestelmissä ja integraatioissa. Javaa tukee valtava määrä frameworkeja ja työkaluja, joista tunnetuimmat ovat Spring Boot, Jakarta EE, Hibernate, Maven ja Gradle — mutta ympärillä on myös erittäin laaja joukko testaus-, cloud-, observability-, security- ja integraatiokirjastoja.