Membandingkan Jakarta EE dan Spring Framework
Spring Framework awalnya merupakan platform pengembangan perangkat lunak server-side yang menggunakan bahasa pemrograman JVM dan berjalan pada servlet container. Sebagaimana pernah dibahas pada artikel lalu, Spring Framework muncul diakibatkan karena rasa frustasi para pengembang perangkat lunak berbasis Java karena begitu kompleksnya penggunaan Java EE. Pada awalnya, Spring Framework hanyalah framework Java dengan fitur Inversion of Control dan Dependency Injection, namun kemudian berkembang menjadi semakin populer dan tumbuh menjadi alternatif full-stack dari Java EE.
Di lain sisi, Java EE (sebelum berganti nama menjadi Jakarta EE) merupakan kumpulan abstract dan spesifikasi yang terstandarisasi yang ditujukan untuk menjadi solusi yang umumnya dihadapi di dalam pengembangan perangkat lunak terutama untuk perangkat lunak berskala enterprise. Spesifikasi dan abstrak tersebut terstandarisasi karena setiap API dari Java EE sudah melalui proses yang ketat melalui program Java Community Process (JCP). Karena Java EE merupakan sekumpulan abstract, sehingga programmer memerlukan implementasi dari abstract tersebut agar aplikasi Java EE dapat dijalankan. Nama resmi dari implementasi abstract tersebut berupa sebuah application server. Beberapa contoh implementasi dari Java EE misalnya adalah Payara Server, Apache Tom EE, JBoss Wildfly dan IBM OpenLiberty.
Pada tahun 2017, Oracle yang memiliki Java EE, memutuskan untuk melepas pengeloaan Java EE ke Eclipse Foundation. Selanjutnya karena alasan legal (di mana Java merupakan merek dagang dari Oracle), nama Java EE kemudian diganti menjadi Jakarta EE. Perbedaan utama Java EE dengan Jakarta EE adalah terkait model tata kelola Jakarta EE yang berbasis komunitas, multi-vendor dan terbuka terhadap partisipasi dan kontribusi dari pengguna korporat dari teknologi tersebut. Eclipse Foundation memastikan bahwa spesifikasi baru dan proses pengembangan untuk Jakarta EE akan tetap terbuka, vendor-neutral dan menyediakan lapangan bermain yang setara untuk semua partisipan.
Perbedaan selanjutnya yang ada pada Jakarta EE adalah digantinya Java Community Process (JCP) menjadi Eclipse Foundation Specification Process (EFSP) yang secara rinci diilustrasikan pada Gambar 1
- Bersatunya Jakarta EE dan Spring Framework
Meskipun Spring Framework lahir karena sulitnya penggunaan Java EE. Namun pada perkembangannya, kedua platform tersebut saling mempengaruhi satu sama lain. Java EE berkembang dengan mendapatkan pengaruh dari Spring Framework. Begitupula sebaliknya, Spring Framework terpengaruh oleh beberapa spesifikasi yang ada pada Java EE. Contoh kecilnya adalah Spring Boot yang merupakan salah satu framework dari platform Spring, dapat dibilang sebagai “mini Java EE dari Spring Framework”, mengingat prinsip convention over configuration dan filosofi “sensible default” yang digunakan pada Spring Boot merupakan konsep yang didapatkan dari Jakarta EE.
Semenjak Spring Boot 3 dan Spring Framework 6, Spring menggunakan baseline Java 17 dan juga Jakarta EE 9. yang menunjukkan bahwa Spring Framework pada akhirnya mengimplementasikan spesifikasi yang ada pada Jakarta EE 9. Hal ini dapat dilihat dari namespace yang digunakan pada versi tersebut telah berubah dari javax.*
, menjadi jakarta.*
. Begitupula Pivotal, yang merupakan perusahaan dibalik Spring Framework telah menjadi anggota komunitas Jakarta EE.