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.