Java Forum Stuttgart 2023: Unser IT-Team im Herzen der Entwicklerwelt!
Vorab ein paar Sätze zur Veranstaltung: Das Java Forum Stuttgart (JFS) ist eine alljährliche, eintägige Konferenz mit Java als zentralem Thema. Es richtet sich in erster Linie an Entwickler, bietet aber auch Entscheidungsträgern wertvolle Einblicke. Die Veranstaltung bietet den Teilnehmern eine umfassende Gelegenheit, sich über Java und das Java- sowie JVM-Umfeld zu informieren. Das Programm umfasst Grundlagenvorträge, Erfahrungsberichte und Informationen zu konkreten Produkten.
Im Juli 2023 nahmen ca. 1.800 Personen in der Liederhalle in Stuttgart an dem Forum teil.
Aus dem comundus Team nahmen vier Entwicklerinnen und ein Entwickler teil, so dass auf subtile Art und Weise die Frauenquote der Veranstaltung (leider) nur marginal gesteigert wurde.
Um 8:45 Uhr begannen die einzelnen Vorträge, unter denen man frei wählen konnte. Auch wenn im Anschluss die Präsentationen und Vorträge zur Verfügung stehen, war die Wahl nicht leichter.
1. Wie man zu besseren Schätzungen kommt:
Die Antwort ist kurz und knapp: leider im Zweifel leider gar nicht.
Die Begründung: Schätzungen beruhen auf Annahmen, die sich innerhalb eines Projekts auch schnell wieder ändern können. Dies war zumindest einer der Kernaussagen des Vortrags. Doch natürlich ging dieser noch etwas weiter in die Tiefe.
Das Grundproblem von Schätzung bleibt, dass diese Hypothesen sind, und damit eben nicht verlässlich. Einhergehend sind sie nicht absolut, sondern relativ. So können Entwickler:innen häufig einschätzen, ob ein Aufwand größer oder kleiner sein wird, als bei vergleichbaren Aufgaben oder Tickets, aber eben nicht wie viel größer oder wie viel kleiner.
Eine Lösung bietet eine feingranulare Schätzung, bei der aber schon relativ viel Zeit investiert und ggf. auch schon Teile ausprobiert werden müssen. Diese Art von Schätzung ist sehr viel näher am letztendlichen Ergebnis, doch bringt sie ein Problem mit sich: Zeitaufwand, der nicht fakturierbar ist. Man selbst möchte ja auch nicht schon hunderte von Euro bezahlen, obwohl der Dienstleister vorbeikommt und „nur guckt“, aber das Problem noch gar nicht löst.
Die Forecast-Methode
Im Vortrag wurde daher die Forecast-Methode als eine mögliche Alternative vorgestellt.
Beim Forecast wird eine wahrscheinlichkeitsbasierte Prognose auf Basis von historischen Daten abgegeben. In „wiederkehrenden“ Projekten, die gleichbleibende Sprintlängen haben und ausreichend gut dokumentiert sind, können so verlässliche Forecasts abgegeben werden. Die Grenzen dieser Methode liegen allerdings in der Datenbasis. Denn um Wahrscheinlichkeiten berechnen zu können, sind gute, umfangreiche historische Daten notwendig.
#NoEstimates
Als eine weitere Alternative wurde das „#NoEstimates-Concept“ für Scrum vorgestellt. Bei diesem Vorgehen kommen nur Inhalte in einen Sprint, wenn der Mehrwert für den Kunden belegbar ist.
Dabei sollte eine Story maximal 5 Entwicklungstage beinhalten, da sie sonst zu unübersichtlich und die Aufgaben zu groß werden. Es ist also sinnvoll, die Storys überschaubar und für Entwickler:innen damit auch „einschätzbar“ zu halten. Die Methode funktioniert bei erfahrenen Teams zuverlässiger. Die entstehenden Unsicherheiten und Risiken müssen dabei natürlich vom Management getragen werden.
T-Shirt-Größen
Bei comundus hat sich das Schätzen in T-Shirt-Größen bewährt, da diese eben die Relation einer Schätzung aufgreift, ohne dass es anschließend zu enormen Abweichungen der Erwartungshaltungen kommt.
2. Modern Java
Bei comundus arbeiten wir immer mit der Java Version, mit der die von uns eingesetzten Portal Softwares Liferay und OpenCms laufen. Daher können wir nicht immer sofort auf die neueste Java Version umsteigen. Deshalb war es umso spannender zu sehen, was es bei neueren Java Versionen geben wird:
- Unnamed variables and classes
- Stringtemplates
String day = "Montag";
String info = STR."Heute ist \{day}. Der schoenste Tag der Woche";
- Sequenced collections: geordnete Listen, die Methoden wie getFirst() und getLast() zur Verfügung stellen
- Vereinfachte main-Methode
Bisher:
public static void main (String[] args){
System.out.println("Hello World");
}
Neu:
void main(){
System,out.println("Hello World");
}
WebAuthn lässt viele verschiedene Authentifizierungsmethoden zu
Im Wesentlichen ist WebAuthn ein Standard, der eine Public-Key-basierte Authentifizierung ermöglicht. Dies bedeutet, dass anstelle von Passwörtern asymmetrische Kryptografie verwendet wird, bei der der Benutzer einen öffentlichen Schlüssel an die Website weitergibt und seine Identität durch den Besitz eines privaten Schlüssels nachweist.
WebAuthn unterstützt auf Client Seite die Verwendung von verschiedenen Authenticatoren, die z. B. durch biometrische Daten (z. B. Fingerabdruck oder Gesichtserkennung) oder durch die Verwendung von physischen Sicherheitsschlüsseln (z. B. FIDO2-Schlüssel) geschützt sind. Das Verfahren bietet ebenfalls die Unterstützung für mehrstufige Authentifizierung, bei der der Benutzer mehr als eine Methode verwenden kann, um seine Identität zu bestätigen.
Bei der Verwendung von WebAuthn erhält der Benutzer den privaten Schlüssel nicht von einer externen Entität oder einem Dienstleister. Stattdessen wird der private Schlüssel direkt auf dem Gerät des Benutzers erzeugt, normalerweise in Form eines kryptografischen Schlüsselpaares. Dieser Vorgang findet in der Regel während der Registrierung statt, wenn sich der Benutzer zum ersten Mal für die WebAuthn-Authentifizierung auf einer Website anmeldet.
So funktioniert die asymmetrische Kryptografie
Um zu verstehen, wie der private Schlüssel zum Identitätsnachweis verwendet wird, ist es hilfreich, das grundlegende Konzept der asymmetrischen Kryptografie zu verstehen.
Asymmetrische Kryptografie verwendet ein Schlüsselpaar, das aus einem privaten Schlüssel und einem zugehörigen öffentlichen Schlüssel besteht. Der private Schlüssel bleibt geheim und wird niemals offengelegt, während der öffentliche Schlüssel frei verfügbar ist und an andere weitergegeben werden kann.
WebAuthn wird von den meisten modernen Webbrowsern unterstützt und ist auch in vielen Webanwendungen und Online-Diensten implementiert. So wird eine sicherere und benutzerfreundlichere Authentifizierung zu ermöglicht.
Ein Prozess könnte wie folgt aussehen:
- Registrierung: Wenn sich der Benutzer auf einer Website für WebAuthn registriert, generiert das Gerät des Benutzers ein kryptografisches Schlüsselpaar, bestehend aus einem privaten Schlüssel und einem zugehörigen öffentlichen Schlüssel. Der private Schlüssel wird dabei niemals an die Website oder an einen externen Dienstleister gesendet oder übertragen. Stattdessen bleibt er sicher auf dem Gerät des Benutzers gespeichert.
- Speicherung: Der öffentliche Schlüssel wird an die Website übertragen und dort gespeichert. Diese behält den öffentlichen Schlüssel als Referenz, um zukünftige Anmeldungen zu überprüfen.
- Anmeldung: Bei der Anmeldung verwendet die Website eine WebAuthn-Anfrage, um die Identität des Benutzers zu überprüfen. Der Benutzer bestätigt die Anfrage auf seinem Gerät, und das Gerät verwendet den privaten Schlüssel, um die Antwort zu signieren.
- Identitätsnachweis: Der signierte Antwortnachweis wird an die Website zurückgesendet. Die Website verwendet den zuvor gespeicherten öffentlichen Schlüssel des Benutzers, um die Signatur zu überprüfen und die Identität des Benutzers zu bestätigen.
Es ist wichtig zu betonen, dass der private Schlüssel während des gesamten Prozesses auf dem Gerät des Benutzers bleibt und nicht an Dritte oder die Website übertragen wird. Dies gewährleistet eine sichere Authentifizierung und verringert das Risiko von Angriffen, bei denen der private Schlüssel gestohlen werden könnte. Der private Schlüssel sollte vom Benutzer sorgfältig geschützt und nicht öffentlich preisgegeben werden.
So kann der private Schlüssel sicher aufbewahrt werden:
- Hardware-Sicherheitsschlüssel: Hardware-Sicherheitsschlüssel (auch als FIDO2-Schlüssel bekannt) sind physische Geräte, die den privaten Schlüssel sicher auf dem Gerät speichern. Diese Schlüssel bieten einen hohen Grad an Sicherheit, da sie vor physischen Angriffen geschützt sind. Hardware-Sicherheitsschlüssel sind in der Regel immun gegen Malware-Angriffe und bieten eine robuste Sicherheitslösung für die Aufbewahrung des privaten Schlüssels.
- Sicherer Hardware-Chip: Einige moderne Geräte, wie Smartphones oder Laptops, verfügen über spezielle Hardware-Chips, die die sichere Aufbewahrung von kryptografischen Schlüsseln ermöglichen. Der private Schlüssel kann in einem sicheren Element des Chips gespeichert werden, der vor externen Zugriffen und Angriffen geschützt ist.
- Schlüsselbund des Betriebssystems: Moderne Betriebssysteme verfügen über Schlüsselbunde oder Keystores, in denen kryptografische Schlüssel sicher gespeichert werden können. Der private Schlüssel kann in einem solchen Schlüsselbund gespeichert werden, der durch das Betriebssystem vor unberechtigtem Zugriff geschützt ist.
- Software-Token: Wenn Hardware-Sicherheitsschlüssel oder sichere Hardware-Chips nicht verfügbar sind, kann der private Schlüssel auch in einem verschlüsselten Dateiformat auf dem Gerät gespeichert werden. Hierbei ist es wichtig, eine zuverlässige Verschlüsselungstechnologie und eine starke Passphrase oder ein Passwort zum Schutz des Schlüssels zu verwenden.
- Kein Cloud-Speicher: Der private Schlüssel sollte niemals in einem öffentlichen Cloud-Speicher oder auf einem öffentlich zugänglichen Server gespeichert werden. Cloud-Speicher sind nicht ausreichend sicher, um den privaten Schlüssel zu schützen, und stellen ein erhebliches Sicherheitsrisiko dar.
- Physische Sicherheit: Unabhängig davon, wo der private Schlüssel gespeichert wird, sollte das Gerät, auf dem er sich befindet, physisch sicher aufbewahrt werden. Dies kann durch den Einsatz von Sicherheitsmaßnahmen wie Zugriffskontrollen, Biometrie oder speziellen Sicherheitsschränken gewährleistet werden.
Wissen erweitern, Horizonte öffnen: Unser Rückblick auf das Java Forum Stuttgart 2023
Auch wenn unsere Entwickler:innen nicht alle Vorträge besuchen konnten und der ein oder andere Vortrag zu abrupt zum Ende kam, war es dennoch gut, die Büro-Wände (und auch die Homeoffice-Wände) mal wieder zu verlassen, um Inspirationen zu sammeln. Im Alltag ist man doch in seinen Projekten „gefangen“ und orientiert sich primär an den Kundenwünschen. Dabei gerät der Blick für Trends eher ins Hintertreffen.
Es war einfach wunderbar, auf dem Java Forum Stuttgart 2023 mal wieder inspiriert zu werden und Themen, die man bisher nur im Hinterkopf hatte, wieder auf einer Oberfläche präsentiert zu bekommen. Für unsere Entwickler:innen war das Thema „Multifaktor-Authentifizierung“ definitiv eines der Themen, welches mit garantierter Sicherheit für die Zukunft relevant sein wird.