Spring, Jakarta... Unterschiede

DaBe1812

Bekanntes Mitglied
Hi,
wer mehr von mir gelesen hat, weiß, dass ich vor habe dieses Jahr unsere Anwendung von Grund auf einem Refactoring zu unterziehen.

Grundsätzlich läuft die Anwendung aktuell in Jakartaa EE, hat ein Primefaces Frontend, EclipseLink für die Kommunikation mit der Datenbank und dazwischen ist alles sage ich mal im JakartaEE Standard.

Da ich vor sechs Jahren an SpringBoot gescheitert bin, habe ich vor zum Umbau es noch einmal zu probieren.
Jetzt bin ich aber über mehrere Dinge gestolpert:
  • Spring hat irgendwie Primefaces als Frontend nicht so richtig drin, d.h. da müsste ich doch schon vom Spring Standard abweichen, oder etwa nicht?
  • Dann bin ich die Woche über einen Artikel gestolpert, dessen Überschrift hat impliziert, dass Spring und Jakartazwei Unterschiedliche Techniken für dieselbe Aufgabe sind. Ich habe den Artikel nicht gelesen, weiß nicht mal mehr, wo es war, aber die Aussage hing mir irgendwie nach.
  • Ist das überhaupt mit einer überschaubaren Menge an Aufwand migrierbar, oder besser alles so lassen, wie es ist und nur sauber überarbeiten.
 

KonradN

Super-Moderator
Mitarbeiter
Ich möchte da erst einmal allgemeiner antworten:

Jede Umstellung ist mit Aufwänden und Risiken verbunden, was dann aus unternehmerischer Sicht in Form von Kosten zu handhaben ist. Wie immer, muss man Kosten rechtfertigen und damit stellt sich die Frage: Was für Vorteile bringt es einem?

Das man in der Software Entwicklung seine Software warten muss und dabei dann auch Migrationen durchzuführen hat, ist klar. Das soll nicht der Punkt der Diskussion sein. Also bleibt tatsächlich, die einzelnen Optionen zu betrachten.
Ganz grob wäre sowas dann:
  • Jakarta EE lassen. Dann bliebe eine Migration auf Jakarta EE 10 oder so. Müsste man wie immer im Detail schauen, was da so alles an Änderungen gewesen ist. Dann kann man den Aufwand / Umfang schätzen.
  • Umstellung auf Spring Boot. Auch hier ist dann natürlich zu analysieren, was es da so an Änderungen gibt. Das kann man so ganz pauschal nicht sagen - Spring Boot und Jakarta EE haben funktional große Überlappungen, so dass sowas denkbar sein sollte.
  • einzelne Technologien können getauscht werden. Also wir schmeißen Primefaces raus und nutzen da was Neues... (Das geht generell egal ob Jakarta EE oder Spring Boot) ...

Wenn man das dann bewerten will, dann sehe ich mehrere Punkte:
a) Aufwand - hier müsste man wirklich einfach mal im Detail schauen, was notwendig ist. Da können dann auch kleine Proof of Concepts ins Spiel kommen. Sprich: Hast Du mal eine Spring Boot Anwendung gebaut mit EclipseLink und PrimeFaces? Was ändert sich da zu dem bisherigen Code, den ihr aktuell habt?
b) Know How - ein wichtiger Punkt ist immer das KnowHow. Du baust jetzt etwas und das soll auch sicher gepflegt werden. Was für KnowHow habt ihr? Gibt es Kollegen, die Spring Boot kennen?
c) Commitment - steht das Team dahinter? Du willst jetzt etwas und alle anderen wollen das nicht? Kann schnell ganz fatal sein. Man will ja an einem Strang ziehen.
d) Risiko - hängt auch am KnowHow: Wie groß ist die Chance, dass es gegen die Wand geht? Wird das Vorhaben klappen?

Unter diesen Gesichtspunkten würde ich das etwas bewerten wollen. Und dann sehe ich die Aussage:
Da ich vor sechs Jahren an SpringBoot gescheitert bin, habe ich vor zum Umbau es noch einmal zu probieren
Das ist dann evtl. ein Proof of Concept. Probier einmal und schau, was wie geht. Aber Du bist an Spring Boot gescheitert, kennst Dich da also nicht aus und dann willst Du heraus finden, wie Du den Bestandscode am besten auf Spring Boot umstellst? Das klingt nicht gut. Das ist nicht gut für Dich, denn die Gefahr ist groß, dass Du böse auf die Nase fällst und du schlicht demotiviert wirst. Und die Chancen für ein gutes Ergebnis sind auch nicht so gut. Du solltest erst einmal Spring Boot im Detail kennen lernen. Dann kann man mehr dazu nehmen und schauen, wie Primefaces verwendet werden kann ... oder wie EclipseLink verwendet werden kann. Klar - du wirst ggf. irgendwas aufbauen können - Baeldung hat Artikel zu beiden Themen oder chatgpt wird bestimmt irgend was liefern. Aber da fehlt dann doch massiv das Verständnis, was da eigentlich passiert.... Und dann sind doch Folgeprobleme vorprogrammiert - du willst ja am Ende ja nicht nur, dass es technisch überhaupt funktioniert sondern Du willst auch so Dinge wie Spring Security und so verstanden haben.

Das wäre so der Roman, den ich da beisteuern würde. Wichtig: Das ist kein "Lass es". Sondern nur ein: "Verstehe die Problematik und mache es vernünftig". Also ggf. erst einmal Spring Boot verstehen. Spring Security dürfte auch wichtig sein und sollte verstanden worden sein. Und dann kann man nach und nach mehr dazu nehmen ... auch Primefaces oder EclipseLink.
 

LimDul

Top Contributor
Also, wir haben bei uns in der Firma das hinter uns - in verschiedenen Ausprägungen:

  • JEE Anwendungen auf Spring-Boot umstellen
  • JEE Anwendungen so umstellen, dass man sie mit Spring-Boot und JEE betreiben kann
  • JEE Batches auf Spring-Batches umstellen
  • JEE Batches so umstellen, dass man sie mit Spring-Batch und JEE betreiben kann

Oberfläche war bei uns Vaadin, JPA war Eclipselink, Spring Security war bereits im Einsatz.

Je nach Komplexität der Anwendung war das großer Aufwand (dreistellige Zahl an Tagen) bis hin zu sehr kleinen Zahlen (<10 Tage). Kann man daher nicht generalisieren.

Grundsätzlich ist die Frage: Warum? Persönlich finde ich Spring Boot deutlich angenehmer - auch im hinblick auf Containierisierung, lokales starten der Awendnung etc. Aber ob sich das als Business Case rechnet muss man schauen, die Stolpersteine sind bei komplexen Anwendungen nicht zu unterschätzen.

Bei uns war der Hauptgrund, dass wir eine Suite von Anwendungen haben, wo die ältesten Anwendungen auf JEE liefen, alle neueren auf Spring Boot. Und wenn wir die ganze Suite verkaufen, ist so ein Technologie-Mischmasch nicht verkaufsfördernd.

Du brauchst aber Leute die sich gut mit JEE und Spring-Boot auskennen - sonst wird das nix.
 

DaBe1812

Bekanntes Mitglied
Hi,
genau sowas hoffe ich immer zu lesen. Mir sind die Gefahren sehr wichtig.
Im Projekt bin ich "der alte Sack", alle anderen Entwickler haben glaube ich noch keine drei vorne stehen. Spring war damals an Maven und am Firmeninternen Nexus gescheitert. Sprich ich habe die Anwendung einfach nicht kompiliert bekommen. Aus selbigem Grund haben wir jetzt Primefaces und nicht Vaadin.
Mein Ansatz als PoC war, dass ich mit dem Firmeneigenen Spring Initializer eine neue Spring Anwendung "starte" und dann einfach ein Modul dahin migriere und daran kann ich ja sehen, wie groß der Aufwand ist.
Und ja, bei Spring fehlt mir jetzt einiges an Ahnung, gerade was diese ganzen Module angeht, die man beim Initialisieren ab- und anwählen kann. Spring Security wäre z.B. eine der Sachen, die ich schön fände, weil das gesamte Rechtehandling in der Anwendung funktioniert zwar, gefällt mir aber nicht.
Im Team habe ich schon mit Jakarta die Probleme, dass die Leute auf mich zukommen und nicht verstehen, warum man Injecten muss.

Containering wird in den nächsten Jahren noch kein Thema bei uns sein. Das wird noch ne gante Zeit lang ein EAR auf einem Websphere bleiben. Da wir aber etwa nächstes Jahr auch Rest bereit stellen wollen/müssen, dachte ich, dass das in Spring evtl. einfacher wird.

Und hör mir auf mit ChatGPT. Wir haben letztes Jahr zum Spaß versucht ein komplettes Modul mit ChatGPT zu erstellen. Sollte ein eigenes Framework zur Timersteuerung von Prozessen sein, weil alle verfügbaren an irgendeiner Stelle nicht funktioniert haben. Wenn mein Verständnis von der Sache nicht so gut gewesen wäre, hätte ich dank ChatGPT locker eine Woche mehr gebraucht. Wobei ich mir vorstellen kann, dass er bei Spring besser helfen kann, weil da einfach mehr im Internet dazu steht.

Und mit dem Know How im Team, muss ich das mal abklopfen. Ich hoffe ja, dass die jungen wilden, die wir ins Team bekommen haben schon mit Spring großgezogen worden sind.
 

M.L.

Top Contributor
(etwas offtopic) das sollte man zum Thema machen: damit lassen sich Umgebungen simulieren, unter denen z.B. Spring mit PrimeFaces aufgesetzt (sowie getestet -> rieckpil.de ( neben baeldung.com ) ) und betrieben werden kann. Und ohne solide Kompetenzen in Docker/Kubernetes (neben Alternativen)/KI-Prompts könnte man -auch unabhängig vom Alter- als "alter Sack" dastehen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
KonradN Schwachstelle Spring Security: cve-2024-22257 Allgemeines EE 0
KonradN Schwachstelle Spring Framework Allgemeines EE 0
Oneixee5 JSON für Spring Boot Endpunkte erzeugen Allgemeines EE 8
KonradN Spring Schwachstelle im Spring Framework (5 und 6) Allgemeines EE 1
KonradN Spring 6 verfügbar Allgemeines EE 0
KonradN Spring Spring Applikation mit module-info Allgemeines EE 6
D Spring 3 vs. Java EE 6 Allgemeines EE 33
R Wie Spring in Eclipse Galileo installieren? Allgemeines EE 5
S JSTL / Spring Webflow Frage Allgemeines EE 2
K adding spring to struts2 - Spring2 Allgemeines EE 7
S Grundverständnis Spring MVC Allgemeines EE 3
M Spring: Bean als Webservice freigeben Allgemeines EE 9
ARadauer midle tier spring rmi remoting - security Allgemeines EE 2
D Erst Spring oder erst Hibernate lernen? Allgemeines EE 2
D Java EE vs. Spring/Hibernate Allgemeines EE 26
byte Remote Lazy Loading mit Spring und Hibernate Allgemeines EE 5
G JSF, Hibernate, Spring --> Struktur Allgemeines EE 2
S allgemeine Frage zu Spring (AOP) Allgemeines EE 2
A Spring und Swing Allgemeines EE 2
B Spring: Verz. "images" in Web-INF über URL verfügb Allgemeines EE 5
S JSF Navigation - Alternative zu Spring Webflow Allgemeines EE 6
W Spring mit JSF und Facelets? Allgemeines EE 1
Ö Spring, Probleme mit FlowScope und HttpServletRequest Allgemeines EE 2
netspy Struts, Spring oder ... ? Allgemeines EE 5
D Probleme beim Umstieg auf Jakarta EE Allgemeines EE 5
D Umstieg von javax auf Jakarta Allgemeines EE 9
KonradN Jakarta EE 10 Release Allgemeines EE 1
G Jakarta Servlet API 5.0 Allgemeines EE 1
B JUnit Tests in Jakarta EE und Wildfly Allgemeines EE 38
S Ist Jakarta heute noch relavant? Allgemeines EE 16
N fileupload - jakarta.commons.fileupload Allgemeines EE 5
D Unterschiede Timer und Oberfläche? Allgemeines EE 4
M Unterschiede zwischen den EE-Servern? Allgemeines EE 6

Ähnliche Java Themen

Neue Themen


Oben