[Java] Gibt es einen Unterschied zwischen Java und Maven was den Compiler angeht?

2 Antworten

Maven ist ein System, mit dem das Projekt strukturiert und verwaltet wird. Du hast da z.B. diese "pom.xml", mit der du u.a. Libraries einfach per XML-Deklaration importieren kannst und du hast sie sofort zur Verfügung und kannst damit arbeiten. Ohne Maven müsstest du die .jars runterladen und manuell reinfrickeln bzw. der Entwicklungsumgebung mitteilen, dass die mitkompiliert werden sollen, was je nach Entwicklungsumgebung ziemlich nervig sein kann).

Maven ist nur ein Zusatz, der das "drumherum" verwaltet.

Das Java selbst ändert sich dadurch nicht - Es sei denn, du hast in der pom eine falsche Java-Version angegeben^^.

Das Problem mit den final-Variablen hat daher nichts mit Maven zutun. Da hast du was anderes vergurkt.

Dieses Problem hast du idr. bei lokalen Variablen, wenn du sie threadübergreifend bzw. über Instanzgrenzen hinweg verwendest UND nach einmaliger Zuweisung später nochmal veränderst.

Woher ich das weiß:Berufserfahrung

Ein Unterschied kann darin liegen, für welche Java-Version und mit welchem JDK du das Programm bauen lässt. In Maven kann man all das mit dem Compiler Plugin (maven-compiler-plugin) vorgeben.

  • Via maven.compiler.source setzt man die Java-Version, deren Sprachfeatures verwendet werden sollen
  • Via maven.compiler.target setzt man die Zielversion, für die die Anwendung später kompatibel sein soll
  • Via compilerVersion bestimmt man die Compiler-Version, die für den Build genutzt werden soll

Du hast in deinem speziellen Fall sicherlich eine ältere Java-Version beim Build eingesetzt.