Evolusi aplikasi web Java

Sejarah pengembangan aplikasi web bangunan dalam bahasa pemrograman Java dengan contoh penggunaannya selama periode dari penampilan spesifikasi servlet hingga saat ini.



Artikel ini tidak mengklaim sebagai akademis secara keseluruhan dan akurat. Interpretasi dari semua fakta yang dikemukakan dan contoh-contoh yang diberikan mencerminkan semata-mata pengetahuan, sudut pandang, dan kesalahan penulis artikel. Tujuan penulisan adalah untuk mencoba mendapatkan gambaran lengkap tentang situasi saat ini untuk aplikasi web Java . Selain itu, informasi yang disajikan dapat digunakan oleh pembaca sebagai titik awal untuk penelitian independen lebih lanjut.

Kode contoh ada di repositori di GitHub : demonstrasi dari setiap perpustakaan dan kerangka kerja dan aplikasi dari bagian akhir artikel . Pada saat penulisan, ada 37 contoh di repositori pertama , seiring waktu, daftar mereka akan diperbarui.

Kronologi munculnya teknologi, perpustakaan, kerangka kerja dan popularitasnya


Untuk memudahkan persepsi, data ditabulasi dan diilustrasikan lebih lanjut dengan diagram. Elemen tabel dikelompokkan bersyarat, jika memungkinkan. Perpustakaan dan kerangka kerja diurutkan berdasarkan popularitas dalam urutan menurun.

Informasi tentang popularitas diambil dari dua sumber. Sumber pertama adalah Indeks Popularitas Kerangka Web Kerangka Kerja ZeroTurnaround RebelLabs . Pembaruan terakhir pada akhir 2017 dan disertai oleh dua posting blog sebelum itu: yang pertama dan kedua . Penulis posting blog kedua, Simon Maple , bergabung dengan Snyk , terus mengumpulkan dan menganalisis statistik yang bermanfaat tersebut. Sumber kedua adalah studinya , diterbitkan di Java Magazine, November / Desember 2018 (pertanyaan 17).

Seperangkat spesifikasi telah ditambahkan di bagian atas tabel, kerangka kerja yang tidak termasuk dalam indeks popularitas, tetapi yang masih ingin saya sebutkan, ditambahkan ke bagian akhir tabel.
Tidak.Teknologi, perpustakaan, kerangka kerjaTanggal versi pertamaTanggal versi terakhir yang stabilPopularitas,%
JenisSubtipeRebelLabs, 2017Majalah Java, 2018
1SpesifikasiServlet12/199609/10/2019
2Jsp09/27/199909/10/2019
3J2EE ,
Java EE ,
Jakarta ee
12/12/199909/10/2019
4Jax-ws10/28/200309/10/2019
5JSF03/11/200409/10/2019
6Jax-rs09/08/200809/10/2019
7Musim semiMusim semi mvc12.200508/02/201928.8236
8Boot musim semi04.201408/02/201913.3540
9Buat webflux09.201708/02/2019
10Wajah JavaServerEclipse mojarra03.03.200411/30/201815,219
11Apache MyFaces11.200505/23/2019
12Toolkit web Google05/16/200610/19/20177.746
13Cawan10.200507/11/20196.353
14Struts05.200001/09/20195,49
15Dropwizard12/21/201108/07/20194.93
16Main05/05/200806/19/20193.263
17Jipster10/21/201309/20/20192.493
18Jax-rsApache cxf04.04.200813/08/20192.44
19Tenang saja09.09.200830/08/2019
20Jersey05.201009/10/2019
21Restlet01.201301.2018
22Vaadin200609/16/20192.155
23Jahitan200707/25/20131.94
24Gawang2005/0609/09/20191.912
25Permadani200009/06/20191.9
26Spark java201122/05/20190,77
27Vert.x201122/08/20190,76
28Rapidoid08.201405/27/20180,25
Tanggal 29Lagom03.201609/04/20190,24
30Ratpack201318/08/20190,13
31Javalin24/05/201708/11/2019
32Micronaut10/23/201809/13/2019
33MikroprofilTomee04/27/201206/21/2019
34Hammock02/27/201403/05/2018
35Duri ekor01.201607/17/2019
36Kumuluzee04/04/201606/29/2019
37Payara mikro07/07/201728/08/2019
38Kebebasan terbuka19/09/201709/06/2019
39Helidon09/19/201809/13/2019

Pada timeline pertama, data dari tabel ditampilkan dalam urutan yang sama seperti pada tabel. Grup yang ada diberi peringkat berdasarkan popularitas. Dalam kelompok (spesifikasi, Spring , JSF , JAX-RS , MicroProfile ), elemen-elemen tersebut disusun dalam urutan kronologis penampilan mereka. Anda dapat mengklik salah satu gambar untuk memperbesarnya.



Pada timeline kedua, informasi yang sama dipesan pada tanggal versi pertama semua elemen muncul. Sangat mudah untuk melihat bahwa pada tahun 2001, misalnya, untuk menulis aplikasi web, Anda dapat memilih hanya dari dua kerangka kerja yang ada - Tapestry and Struts . Pada awal 2014, tidak mungkin untuk menggunakan Spring Boot (versi resmi pertamanya dirilis kemudian) dan tidak masuk akal untuk menggunakan Seam (tidak ada lagi).



Diagram lingkaran menunjukkan indeks popularitas kerangka kerja menurut RebelLabs pada akhir 2017 . Masing-masing kerangka kerja dalam indeks berpartisipasi satu kali, yaitu jumlah total bunga adalah 100. Diagram kedua menunjukkan hasil penelitian dari Majalah Java, 2018 . Studi ini bertanya kerangka kerja web apa yang digunakan, diizinkan memilih lebih dari satu dalam jawaban. Karena alasan ini, setiap persentase tidak tergantung pada yang lain dan tidak dapat diringkas.



Spesifikasi


Landasan keberadaan semua perpustakaan adalah standar dan spesifikasi yang menjadi dasarnya. Spesifikasi ada dalam bentuk Permintaan Spesifikasi Java ( JSRs ) yang dikembangkan melalui prosedur formal yang disebut Java Community Process ( JCP ).

Daftar JSR yang terkait dengan Java Enterprise Edition ada di sini . Tabel di bawah ini hanya menampilkan dua spesifikasi paling signifikan yang dipilih - Servlet dan Java EE (yang terakhir adalah sekumpulan spesifikasi lain). Versi pertama dari spesifikasi tidak diterima sebagai bagian dari JCP , sehingga mereka tidak memiliki nomor JSR .

Sejak 12 September 2017, Java EE telah dipindahkan ke manajemen Eclipse Foundation dan sekarang disebut Jakarta EE . JCP telah digantikan oleh Proses Spesifikasi EE Jakarta sebagai proses untuk mengembangkan dan mengadopsi spesifikasi.

Menggunakan HTTP Servlets


Berikut ini adalah beberapa contoh membuat aplikasi web tanpa pustaka atau kerangka kerja. Tautan ke lokasi kode dengan komentar singkat akan diberikan secara berurutan. Ada metode yang lebih mirip, yang paling jelas ditunjukkan.

Contoh pertama (modul helloworld-web-servlet-xml ) di deployment descriptor web.xml menentukan kelas yang diwarisi dari kelas abstrak HttpServlet dengan implementasi sendiri dari metode doGet () . Untuk pertama kalinya, file descriptor descriptor web.xml disebutkan dalam spesifikasi Servlet 2.2 (1999).

Pada contoh kedua (modul helloworld-web-servlet-annotation ), web.xml deskriptor penggunaan web.xml ada. Di atas kelas yang sama yang diwarisi dari kelas abstrak HttpServlet, ada anotasi WebServlet yang muncul di Servlet 3.0 (2011).

Contoh ketiga (modul helloworld-web-servlet-interface-jar dan helloworld-web-servlet-interface-war ) sedikit lebih rumit. Ini menunjukkan cara menggunakan implementasi antarmuka ServletContainerInitializer , yang juga muncul di Servlet 3.0 . Dalam modul pertama helloworld-web-servlet-interface-jar masih belum ada web.xml descriptor penyebaran web.xml , ada kelas yang berasal dari kelas abstrak HttpServlet . Servlet 3.0 memungkinkan implementasi antarmuka ServletContainerInitializer untuk menambahkan komponen servlet secara terprogram, termasuk melakukan pendaftaran servlet. Kelas implementasi antarmuka ServletContainerInitializer menggunakan konsep Service Provider Interface ( SPI ) dikonfigurasi dengan menentukan namanya dalam file META-INF/services/javax.servlet.ServletContainerInitializer . Modul pertama membuat file JAR. File PERANG menciptakan modul kedua helloworld-web-servlet-interface-war , modul pertama ditentukan dalam daftar dependensi. Pendekatan serupa untuk mengimplementasikan antarmuka ServletContainerInitializer digunakan oleh kerangka kerja JSF dan Spring di kelas FacesInitializer dan SpringServletContainerInitializer mereka masing-masing.

Servlet 3.0 juga memperkenalkan servron asinkron, di Servlet 3.1 (2013) - I / O non-blocking, di Servlet 4.0 (2017) - dukungan HTTP / 2 .

Zaman Sebelum Musim Semi


permadani Apache Tapestry adalah kerangka kerja aplikasi web yang benar-benar berumur panjang. Versi pertama dirilis pada tahun 2000, versi baru terus dirilis sekarang. Saat merancang Tapestry , ide-ide dari WebObjects , kerangka kerja web yang muncul beberapa tahun sebelumnya, dipinjam. Aplikasi yang menggunakan Tapestry (misalnya, modul helloworld-web-tapestry ) menggunakan arsitektur modular dan pengikatan komponen antarmuka pengguna halaman web dengan kelas Java yang sesuai.

struts Apache Struts muncul hampir bersamaan dengan kerangka kerja sebelumnya, pada Mei 2000, dan juga terus berkembang hingga hari ini. Dalam contoh yang didasarkan padanya ( modul helloworld-web-struts ), Anda bisa melihat di file descriptor penyebaran web.xml indikasi kelas StrutsPrepareAndExecuteFilter sebagai filter. Kelas ini berfungsi sebagai manajer permintaan, memilih tindakan yang sesuai dengan permintaan. Apache Struts , seperti Tapestry , didasarkan pada pola desain MVC .

JSF Pada bulan Maret 2004, spesifikasi JavaServer Faces dirilis dan dua implementasi berturut-turut: sekarang disebut Eclipse Mojarra (sebelumnya Implementasi Referensi JSF Sun , JSF RI , Mojarra , Oracle Mojarra ) dan Apache MyFaces . Pendekatan utama yang didukung oleh spesifikasi adalah penggunaan komponen. Kedua contoh ( modul helloworld-web-jsf-mojarra dan helloworld-web-jsf-myfaces ) benar-benar identik satu sama lain, dengan pengecualian perpustakaan dependensi. Aplikasi menentukan dan menampilkan pada halaman web versi implementasi spesifikasi JSF , nama implementasi ( Mojarra atau MyFaces ) dan versi implementasinya.

gawang Juni 2005 dan rilis versi pertama kerangka kerja Wicket , secara ideologis mirip dengan Tapestry dan JavaServer Faces . Pendekatan berorientasi komponen dan menghubungkan templat HTML untuk halaman web dengan kelas Java . Sejak Juni 2007, kerangka kerja milik Yayasan Perangkat Lunak Apache , mengubah namanya menjadi Apache Wicket . Puncak popularitas kerangka kerja muncul sekitar 2008-2009, kemudian diikuti oleh penurunan minat secara bertahap di dalamnya. Versi baru terus dirilis, contoh aplikasi dapat dilihat pada modul helloworld-web-wicket .

grails Pada Oktober 2005, versi pertama Grails , kerangka kerja untuk membangun aplikasi web yang ditulis dalam bahasa JVM Groovy, dirilis . Seperti yang tersirat dari nama produk, Ruby on Rails , sebuah kerangka kerja yang ditulis dalam Ruby, memiliki pengaruh kuat pada pembuatannya. Juga berdasarkan pola MVC . Fitur khusus adalah penggunaan file tampilan GSP ( Groovy Server Pages ) sebagai templat. Contoh (modul helloworld-web-grails ) dibuat, dibuat dan dapat dijalankan menggunakan Grails Maven Plugin , sebuah plugin untuk Maven .

Spring MVC, Spring Boot, dan Spring WebFlux


musim semi Versi pertama dari Spring Framework , termasuk Spring MVC , muncul pada Desember 2005. Kelas servlet HTTP di dalamnya adalah DispatcherServlet . Berikut ini adalah beberapa contoh dalam urutan kronologis penampilan fitur (versi baru dari spesifikasi Servlet , yang pertama kali diluncurkan adalah Spring Boot pada April 2014, kemudian Spring WebFlux pada September 2017), yang digunakan di dalamnya.

Dalam contoh pertama (modul helloworld-web-spring-mvc-xml ), web.xml deskriptor penggunaan web.xml ditentukan sebagai servlet DispatcherServlet . Di controller dengan satu-satunya metode yang memproses permintaan GET, ada anotasi yang sesuai ( Kontroler dan Pemetaan Permintaan ). Tampilannya adalah file JSP .

Dalam contoh kedua (modul helloworld-web-spring-mvc-java ), web.xml descriptor penyebaran web.xml hilang dan peluang yang muncul di Servlet 3.0 digunakan untuk melakukan konfigurasi perangkat lunak. Kelas yang diwarisi dari AbstractAnnotationConfigDispatcherServletInitializer (akhirnya mengimplementasikan implementasi antarmuka ServletContainerInitializer dengan SPI ) dan JavaConfig (konfigurasi menggunakan kode program dengan anotasi Konfigurasi digunakan bersama-sama ).

Contoh ketiga (modul helloworld-web-spring-boot-mvc ) menunjukkan penyederhanaan yang signifikan dari proyek sambil mempertahankan fungsionalitas yang sama berkat munculnya Spring Boot . Selain kelas pengontrol, ada juga hanya satu kelas yang diwarisi dari SpringBootServletInitializer dan dijelaskan oleh SpringBootApplication .

Contoh keempat ( modul helloworld-web-spring-boot-webflux ) menunjukkan, bersama dengan Spring Boot, penggunaan Spring WebFlux , yang baru-baru ini ditambahkan ke Kerangka Kerja Spring . Spring WebFlux menggunakan prinsip reaktif dan Reaktor Proyek . Dari dua pendekatan utama ( gaya fungsional dan berbasis anotasi ), yang pertama terlibat dalam contoh.

Setelah munculnya Spring, 2000-an


vaadin Pengembangan Vaadin dimulai pada tahun 2002 sebagai pelengkap kerangka kerja lainnya, Millstone 3 . Selama tahun 2006, apa yang dibuat dibingkai sebagai produk komersial jadi. Hingga Mei 2009, ia memiliki nama IT Mill Toolkit , hanya setelah saat itu menjadi Vaadin . Pada akhir 2007, bagian klien yang sebelumnya diimplementasikan secara independen digantikan oleh Google Web Toolkit ( GWT ). Contoh (modul helloworld-web-vaadin ) menunjukkan bahwa hanya ada satu file kelas Java di mana semua komponen antarmuka pengguna dibuat secara terprogram, sambil menyembunyikan detail teknis tingkat rendah.

gwt Produk yang sangat menarik, Google Web Toolkit ( GWT ), muncul pada Mei 2006, versi terbaru dirilis dua tahun lalu. Untuk menulis bagian server dan klien, Anda diberi kesempatan untuk menggunakan bahasa Java yang sama. Kompiler khusus mengubah kode klien dalam Java ke JavaScript . Contohnya terdiri dari tiga modul - helloworld-web-gwt-client (bagian klien), helloworld-web-gwt-server (bagian server) dan helloworld-web-gwt-shared (kode umum untuk bagian klien dan server). Selama pengembangan, Anda dapat menggunakan plug-in Maven yang nyaman untuk meluncurkan bagian klien dalam Mode Super Dev , di mana Server Kode disebut memudahkan mengkompilasi ulang kode Java yang diubah.

jahitan Seam memulai hidupnya pada Mei 2007 dan tidak lagi ada pada 2012. Itu didasarkan pada Enterprise JavaBeans ( EJB3 ) dan JavaServer Faces ( JSF ). Dikembangkan oleh JBoss , yang saat itu bagian dari Red Hat . Dia mengusulkan berbagai konsep menarik (misalnya, penambangan , yang mana ada anotasi yang sesuai ). Situs kerangka kerja masih ada, tetapi di beberapa bagiannya beberapa tautan tidak lagi relevan. Contoh aplikasi ada di modul helloworld-web-seam .

jax-rs Versi pertama dari spesifikasi Java API untuk RESTful Web Services ( JAX-RS ) dirilis pada 2008 ( JSR 311 ), kemudian spesifikasi diperbarui ( JSR 339 , JSR 370 ). Implementasi JAX-RS yang paling populer adalah kerangka kerja Apache CXF (versi pertama adalah April 2008), RESTEasy (September 2008), Jersey (Mei 2010), dan Restlet (Januari 2013). Contoh penggunaannya terdapat dalam modul helloworld-web-jaxrs-apache-cxf , helloworld-web-jaxrs-resteasy , helloworld-web-jaxrs-jersey dan helloworld-web-jaxrs-restlet, masing-masing .

mainkan Play Framework muncul pada Mei 2008. Ditulis dalam bahasa pemrograman Scala JVM . Memungkinkan Anda membuat aplikasi web berdasarkan itu di Scala dan Java . Fitur khusus dari pengembang Play adalah komitmen mereka terhadap alat sbt build. Untuk alasan ini, untuk menulis contoh (modul helloworld-web-play ), saya harus melakukan beberapa upaya untuk membangun di bawah Maven , menggunakan plug-in yang sesuai untuk ini.

2010-an, waktu terbaru


sparkjava Pada tahun 2011, versi pertama dari microframework Spark yang indah, dirilis di bawah pengaruh Sinatra , ditulis dalam Ruby , dirilis. Laconicism, lightness dan minimalism syntax melekat di dalamnya. Contoh ( modul helloworld-web-sparkjava ) menunjukkan bagaimana Anda dapat menulis aplikasi lengkap hanya dalam beberapa baris. Kemampuan kerangka mungkin cukup jika Anda tidak perlu sesuatu yang terlalu rumit dalam aplikasi Anda.

vertx Pada 2011, Vert.x , kerangka kerja berorientasi peristiwa yang berjalan di JVM, muncul . Ditulis di bawah pengaruh signifikan Node.js , awalnya disebut Node.x. Ini memiliki sifat multibahasa, memungkinkan Anda untuk menggunakan Java , JavaScript , Groovy , Ruby , Ceylon , Scala atau Kotlin saat menggunakan framework. Berdasarkan perpustakaan Netty , ia memiliki banyak fitur dan keunggulan yang berbeda. Contohnya ada di modul helloworld-web-vertx .

dropwizard Desember 2011 adalah waktu awal keberadaan Dropwizard , penulis yang memposisikan produk mereka sebagai sesuatu di antara perpustakaan dan kerangka kerja. Tiga bagian utama yang terdiri dari perpustakaan Jetty ( HTTP ), Jersey ( JAX-RS ) dan Jackson ( JSON ). Itu terus berkembang pada saat ini, bahkan memiliki beberapa popularitas. Contoh ( modul helloworld-web-dropwizard ) memperlihatkan struktur khas aplikasi web berbasis Dropwizard .

ratpack Ratpack adalah kerangka kerja lain (selain Spark ), terinspirasi oleh perpustakaan Sinatra dan sebagian besar ditulis dalam bahasa JVM Groovy . Koneksi Frank Sinatra dengan yang disebut paket tikus ("paket tikus"). Versi pertama dari kerangka dirilis pada 2013, versi baru terus dirilis. Berdasarkan perpustakaan Netty , cepat, minimalis, mudah digunakan, sangat skalabel. Contohnya dapat dilihat pada modul helloworld-web-ratpack .

Jhipster Oktober 2013, munculnya proyek JHipster yang penasaran, generator kerangka aplikasi web. Untuk membangun bagian klien, kerangka kerja JavaScript Angular , React, dan Vue didukung (yang terakhir masih didukung dalam mode eksperimental ). Backend didasarkan pada Spring Boot . Untuk membangun proyek, Maven atau Gradle dapat dipilih. Contoh dari aplikasi yang dihasilkan JHipster ada di modul helloworld-web-jhipster .

rapidoid Pada Agustus 2014, versi pertama kerangka Rapidoid dirilis , sederhana, cepat dan modular. Modul yang direkomendasikan dengan mana disarankan untuk mulai menggunakan kerangka kerja termasuk interaksi melalui HTTP , Hibernate , Hibernate Validator , Connector MySQL, dan perpustakaan Logback . Dengan meningkatnya kebutuhan, set modul yang digunakan dapat diperluas. Contoh ( modul helloworld-web-rapidoid ) memungkinkan Anda untuk mengevaluasi minimalisme kode yang diperlukan untuk mendapatkan aplikasi web sederhana.

lagom Maret 2016, rilis kerangka Lagom . Penulis produk perangkat lunak ini memposisikan aplikasinya untuk memecah aplikasi monolitik lama menjadi layanan microsoft reaktif yang berskala baik selama operasi mereka. Kerangka kerja ini didasarkan pada Akka and Play Framework . Bahasa pemrograman Java atau Scala dapat digunakan untuk mengembangkan aplikasi mereka. Contoh berdasarkan Lagom ditemukan dalam modul helloworld-web-lagom-api dan helloworld-web-lagom-impl .

javalin Baru- baru ini, pada bulan Mei 2017, perpustakaan Javalin yang ringan dan sederhana dirilis . Pembuatnya sendiri menyatakan terima kasih kepada penulis kerangka kerja Sinatra dan Spark yang telah disebutkan. Perpustakaan difokuskan pada bahasa Jawa dan Kotlin . Ini menjamin tidak adanya anotasi dan kebutuhan untuk mewarisi kelas perpustakaan, kode sesingkat mungkin, dukungan untuk WebSocket , HTTP / 2 dan permintaan tidak sinkron. Contoh berdasarkan itu dapat dilihat pada modul helloworld-web-javalin .

mikronot Bintang yang sedang naik daun di antara kerangka kerja web, versi pertama yang muncul hanya setahun yang lalu, pada Oktober 2018, adalah Micronaut . Mendukung bahasa pemrograman Java , Groovy, dan Kotlin JVM . Keuntungan signifikannya adalah mulai cepat aplikasi berdasarkan itu dan konsumsi memori rendah. Ini dipastikan dengan implementasi dependensi pada tahap kompilasi, dan bukan pada saat runtime. Fitur lainnya adalah dukungan yang luar biasa untuk pemrograman reaktif, penggunaan perpustakaan RxJava , Reactor dan Akka dimungkinkan . Contoh ( modul helloworld-web-micronaut ) menunjukkan pembuatan aplikasi sederhana berbasis Micronaut .

Mikroprofil


mikroprofil Karena beratnya Java EE saat ini , sejumlah perusahaan memiliki kebutuhan untuk layanan-mikro untuk mengembangkan serangkaian spesifikasi yang ringan, yang dilakukan - pada bulan September 2016, MicroProfile 1.0 dirilis. Awalnya, set hanya mencakup tiga spesifikasi ( CDI , JAX-RS dan JSON-P ). Persyaratan meningkat secara bertahap, oleh versi 3.0, daftar spesifikasi telah tumbuh secara signifikan.

Tidak.SpesifikasiVersi MicroProfile
1.01.11.21.31.42.02.12.23.0
1Cdi1.21.21.21.21.22.02.02.02.0
2Konfigurasi1.01.11.21.31.31.31.31.3
3Toleransi kesalahan1.01.01.11.11.12.02.0
4Kesehatan1.01.01.01.01.01.02.0
5Jax-rs2.02.02.02.02.02.12.12.12.1
6Json-b1.01.01.01.0
7Json-p1.01.01.01.01.01.11.11.11.1
8JWT Auth1.01.01.11.11.11.11.1
9Metrik1.01.11.11.11.11.12.0
10API terbuka1.01.01.01.01.11.1
11Buka tracing1.01.11.11.21.31.3
12Ketik Safe Rest Client1.01.11.11.11.21.3

Saat ini, ada kerangka kerja web yang memenuhi MicroProfile ke berbagai tingkat. Tujuh dari mereka dipilih untuk demonstrasi, berikut ini adalah korespondensi dari versi kerangka kerja ke versi MicroProfile . Informasi lengkap tentang semua kerangka kerja yang ada yang menerapkan MicroProfile ada di sini .
Tidak.Kerangka kerjaVersi MicroProfile
1.01.11.21.31.42.02.12.23.0
1Tomee7.1.08.0.0-M18.0.0-M28.0.0-M3
2Hammock2.0
3Duri ekor2.1.0
Terakhir
2.3.0
Terakhir
2.4.0
Terakhir
2.5.0
Terakhir
4Kumuluzee2.1.02.5.23.0.03.2.03.2.03.2.03.2.03.5.0
5Payara mikro174181182183183191192
6Kebebasan terbuka17.0.
0,3
18.0.
0,1
18.0.
0,3
18.0.
0,3
18.0.
0,4
19.0.
0,3
19.0.
0,7
7Helidon0.9.41.01.2.01.2.01.2.01.2.01.2.0

mikroprofil1 Kelompok kerangka kerja pertama termasuk kerangka yang sudah ada pada saat rilis MicroProfile 1.0: TomEE (versi pertama dirilis pada April 2012), Hammock (Februari 2014), Thorntail (sebelumnya bernama WildFly Swarm , Januari 2016) dan KumuluzEE (April 2016). Paling sering, kepatuhan terhadap serangkaian spesifikasi baru dicapai untuk mereka dengan menghapus dari produk yang ada semua yang berlebihan. Contoh penggunaan ditemukan dalam modul helloworld-web-microprofile-tomee , helloworld-web-microprofile-hammock , helloworld-web-microprofile-thorntail dan helloworld-web-microprofile-kumuluzee .

microprofile2 Kelompok kerangka kerja kedua termasuk yang muncul lebih lambat daripada versi pertama MicroProfile : Payara Micro (Juli 2017), Open Liberty (September 2017) dan Helidon (September 2018). Untuk kerangka kerja ini, kebalikannya menjadi mungkin - dari awal implementasi, misalnya, Helidon dikembangkan secara khusus untuk kepatuhan MicroProfile , oleh karena itu tidak ada yang berlebihan dalam komposisinya. Contoh aplikasi bangunan dapat dilihat pada modul helloworld-web-microprofile-payara , helloworld-web-microprofile-openliberty dan helloworld-web-microprofile-helidon .

Wadah Servlet dan Server Aplikasi


Aplikasi web dijalankan dalam perangkat lunak khusus yang mengimplementasikan spesifikasi yang relevan (misalnya, Servlet API ). Di bawah ini adalah kontainer servlet dan server aplikasi paling populer saat ini. Persentase popularitas juga diambil dari hasil penelitian (pertanyaan 20).
Tidak.Wadah servlet, server aplikasiTanggal versi pertamaTanggal versi terakhir yang stabilPopularitas,%
KeluargaNama
1TomcatTomcat11/199817/08/201941
2Tomee04/201206/21/2019
3JbossJboss eap199901/22/201915
4Wildfly199907/03/2019
5Jetty200014/08/20199
6Server Weblogic11/199730/08/20176
7WebsphereServer Aplikasi WebSphere199804/02/20195
8Kebebasan terbuka09.201714/08/2019
9GlassfishServer GlassFish06/06/200501/28/20195
10Server payara10/31/201429/08/2019

Garis waktu menunjukkan masa pakai masing-masing produk perangkat lunak dalam tabel. Anda dapat melihat urutan penampilan mereka dan waktu rilis versi terbaru.



Semakin banyak containerisasi sekarang digunakan ketika menggunakan dan menerbitkan aplikasi, sehingga penggunaan server aplikasi menjadi semakin tidak relevan.

Penggunaan bahasa selain Java dalam aplikasi


Baru-baru ini, ada kecenderungan untuk membuat aplikasi hybrid, sebagai salah satu komponen yang ada kode Java . Sesuai dengan tren di Majalah Java , yang tema utamanya adalah bahasa pemrograman Java , di kolom kepala editor di edisi Januari / Februari 2017 , "Masa Depan Polyglot" dideklarasikan dan dimasukkan dalam zona minat bahasa JavaScript .

Dalam penelitian yang telah disebutkan di atas , pada pertanyaan 16, mereka tertarik pada bahasa non- JVM apa yang digunakan dalam aplikasi JVM . Pemimpin (57%) adalah JavaScript , digunakan di frontend. Mengingat fakta bahwa beberapa aplikasi web tidak memiliki GUI sama sekali (layanan, layanan microser, layanan), kami dapat dengan yakin mengatakan bahwa penggunaan kerangka kerja JavaScript untuk antarmuka grafis dalam aplikasi Java tersebar luas.



Contoh aplikasi Java khas hari ini


Untuk mendemonstrasikan aplikasi web Java yang khas dengan antarmuka grafis, sebuah program ditulis dengan emulasi fungsionalitas Twitter dasar : otentikasi, manajemen akun (membuat, mengedit, menghapus, mencari berdasarkan substring), halaman utama (properti akun, umpan pesan), pembuatan Tweet, berlangganan / berhenti berlangganan.

Backend ditulis menggunakan Spring Boot , frontend ditulis menggunakan kerangka JavaScript Angular yang populer. Di bagian Java dari aplikasi, komponen-komponen dari keluarga Spring diwakili secara maksimal: Spring MVC , Spring Boot , Spring Security , Spring Test , Spring Boot Admin . API REST backend dirender menggunakan Swagger .

JUnit , Spring Test , Mockito , TestContainers (unit- Java -) Jasmine Protractor (unit- end-to-end- JavaScript Angular ).

( Spring Boot Angular ) , TechTrain 2019 .

Kesimpulan


Java , -, . , , , , .

, , GitHub : , .

JUG Ru Group
Spring :
  • «Spring the Ripper», ( JPoint 2014 : , )
  • «Spring Data? , !», ( Joker 2014 : , )
  • «Spring Puzzlers: Spring», ( Joker 2014 : )
  • «Spring Puzzlers — », ( JPoint 2015 : , )
  • «The Bootiful Application», Josh Long ( Joker 2015 : , )
  • « Spring Boot Starter», ( JPoint 2016 : , )
  • «Spring – », ( JPoint 2017 : , )
  • « Spring Test», ( JPoint 2017 : , )
  • «Boot yourself, Spring is coming», ( Joker 2017 : )
  • « Spring 5/Reactor», ( Joker 2017 : )
  • «Spring Framework 5.0 on JDK 8 & 9», Juergen Hoeller ( JPoint 2018 : , )
  • «Spring Framework 5: feature highlights and hidden gems», Juergen Hoeller ( JPoint 2018 : , )
  • «Camel microservices with Spring Boot and Kubernetes», Claus Ibsen ( JPoint 2018 : , )
  • «Spring Boot Xtend: c », ( JPoint 2018 : , )
  • «Boot yourself, Spring is coming», ( JPoint 2018 : 1 2 , )
  • «Spring Boot 2: release notes», ( Joker 2018 : , )
  • «The Proxy fairy and the magic of Spring», Victor Rentea ( JPoint 2019 : , )
  • « Spring Boot, : AOT- Spring-», ( JPoint 2019 : , )
  • «Reactive reactive, », ( JPoint 2019 : , )
  • « Spring Boot- Java 8 11: ?», ( JPoint 2019 : , )

Play :
  • «50 Play!», ( Joker 2015 : )

Vaadin :
  • « — web UI Java desktop-», ( JPoint 2018 : , )
  • « Vaadin Flow», ( JPoint 2019 : , )

Vert.x :
  • «Vert.x: », ( Joker 2015 : )
  • «Vert.x: », ( Joker 2016 : , )
  • « Vert.x », ( JPoint 2018 : , )

Micronaut :
  • «Micronaut vs Spring Boot, ?», ( Joker 2018 : , )

MicroProfile :
  • «Microprofile.io: », ( Joker 2018 : , )

Java JavaScript :
  • «JavaScript in the nterprise», Markus Eisele ( Joker 2014 : , )
  • «Java(Script) on JVM», ( Joker 2015 : )


UPD : Quarkus ( helloworld-web-quarkus ) ActFramework ( helloworld-web-actframework ), .. 39.

25-26 2019 - Java- Joker 2019 , 1 .

8-9 2019 JavaScript- HolyJS 2019 Moscow , 1 .

Source: https://habr.com/ru/post/id453468/


All Articles