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.
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
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.
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 .

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.

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 .

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

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

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.

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.
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 .

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 .
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

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.

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 .

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 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 .

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 .

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.

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 .
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 .

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

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.
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 .

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 .

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).
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 GroupSpring :
- «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 .