---
title: 'Compact-Profile in Java 8'
url: 'https://www.tutego.de/blog/javainsel/2014/01/compact-profile-in-java-8'
markdown: 'https://www.tutego.de/blog/javainsel/2014/01/compact-profile-in-java-8.md'
date: '2014-01-09'
description: 'Nicht jedes Java-Programm braucht den vollen Satz von 4000 Typen, sondern oftmals reicht eine kleine Teilmenge. Eine Teilmenge der Java-Bibliothek wiederum ermöglicht es, kleinere Laufzeitumgebung zu bauen, was es erlaubt, Java auch für Geräte mit weniger Ressourcen einzusetzen. Eine kleine Java-Ve…'
taxonomy:
  category:
    - Insel
    - 'Java 8'
---

# Compact-Profile in Java 8

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://www.tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://www.tutego.de/blog/javainsel/)

## Compact-Profile in Java 8

09.01.2014 · [Christian Ullenboom](https://www.tutego.de/blog/javainsel/author/admin/)

Nicht jedes Java-Programm braucht den vollen Satz von 4000 Typen, sondern oftmals reicht eine kleine Teilmenge. Eine Teilmenge der Java-Bibliothek wiederum ermöglicht es, kleinere Laufzeitumgebung zu bauen, was es erlaubt, Java auch für Geräte mit weniger Ressourcen einzusetzen. Eine kleine Java-Version für Embedded-Systeme braucht kein CORBA, AWT oder JavaFX und kann so viel kleiner als das Standard-JRE sein.

In Java 8\[\[1\]\]() wurde die Bibliothek in 4 Gruppen eingeteilt, auf der einen Seite stehen drei kompakte aufsteigende Teilmengen der Standardbibliothek, genannt Compact-Profile, und auf der anderen Seite das vollständige System. Das Profil contact1 ist das kleinste, compact2 enthält contact1, contact3 enthält compact2 und das Gesamt-JRE compact3.

Welche Typen zu welchem Profil gehören dokumentiert die Java-API auf der Startseite sowie gibt jeder Typ in der Javadoc sein Profil an; die grobe Einteilung ist:

**Profil**

**Größe**

**Pakete**

compact1

10 MiB

`java.io`, `java.math`, `java.net`, `java.nio`, `java.security`, `java.time`, `java.util` (inklusive `Stream`-API), `javax.crypto`, `javax.script`, `javax.security`

compact2

17 MiB

`java.sql`, `java.rmi`, `javax.rmi`, `javax.transaction`, `javax.xml`, `org.xml`, `org.w3c`

compact3

24 MiB

`java.lang.instrument`, `java.lang.management`, `java.util.prefs`, `java.lang.model`, `javax.management`, `javax.naming`, `javax.sql.rowset`, `javax.tools`, `javax.xml.crypto`, `org.ieft.jgss`, Kerberos, SASL

JRE/JDK

140 MiB

Alles weitere: `java.beans`, AWT, Swing, JavaFX, CORBA, `java.awt.print`, Sound, SOAP, Web-Service, …

Inhalt der verschiedenen Profile mit Speicherbedarf\[**\[2\]**\]()

Weiterhin ist die Anzahl verschiedener Provider minimiert worden, es gilt zum Beispiel nur Englisch als verpflichtende Sprache.

###### Werkzeug-Unterstützung für Profile

Die Werkzeuge javac, javadoc und jdeps aus dem JDK sind für die Profile aktualisiert worden, etwa dass sie prüfen können, ob ein Typ/Eigenschaft zum Profil gehört oder nicht. Der Schalter –profile gibt dabei das gewünschte Profil an.

Beispiel

Versuche die Klasse `T` mit der Deklaration class `T` extends `java.awt.Point` {} mit dem Profile compact3 zu übersetzen:

$ **javac -profile compact3 `T`.java**

`T`.java:2: error: Point is not available in profile ‚compact3‘

```java
class T extends java.awt.Point { }
```

^

1 error

Obwohl Point eine nützliche Klasse ist, und keine plattformspezifischen Eigenschaften hat, ist das gesamte Paket `java.awt` gesperrt und kein Teil vom Compact-Profile.

---

\[\[1\]\]() Beschrieben erstmalig unter <http://openjdk.java.net/jeps/161>

\[\[2\]\]() Zahlen von JavaOne Konferenz 2013.

Kategorien: [Insel](https://www.tutego.de/blog/javainsel/category/insel/), [Java 8](https://www.tutego.de/blog/javainsel/category/java-8/)

[← Alle Beiträge](https://www.tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Annotation jdk.Exported](https://www.tutego.de/blog/javainsel/2014/01/annotation-jdk-exported.md)
- Next: [map(…) Methoden von Optional für funktionale Programmierung](https://www.tutego.de/blog/javainsel/2014/01/map-methoden-von-optional-fr-funktionale-programmierung.md)
