Setiap tahun di masa lalu, semakin banyak kerangka kerja Java muncul. Seperti JavaScript, semua orang berpikir mereka tahu seperti apa fungsi kerangka kerja yang baik. Bahkan nenek lama saya sekarang menggunakan kerangka kerja yang belum pernah saya dengar dan mungkin tidak akan pernah digunakan. Pasar Kerangka Kerja yang membengkak dipenuhi oleh kerangka kerja yang membengkak yang dapat melakukan hampir semua hal, tetapi bagaimana menilai itu? Artikel ini bertujuan untuk menyediakan kerangka kerja Java Rest yang tersedia saat ini. Saya hanya memperkenalkan produk-produk ringan, melewatkan kerangka kerja yang dirancang berlebihan. Pada saat yang sama, saya hanya ingin mereka menjadi stabil dan dewasa, memberikan fitur sederhana dan ringan. Saya hanya melanggar aturan ini saat memperkenalkan kerangka kerja bermain, alasannya diberikan nanti. Java Restful Framework mana yang digunakan dalam proyek mendatang tergantung sepenuhnya pada kebutuhan Anda saat ini. Untuk membuat pilihan Anda lebih mudah, saya akan mencantumkan fitur kerangka kerja yang paling menonjol, berharap ini akan menghemat waktu Anda.
Dropwizard
Waktu Lahir: 2011
Peringkat: 4.5/5
DropWizard menyediakan perpustakaan Java yang stabil dan matang dan merangkumnya menjadi paket sederhana dan ringan.
Dropwizard berada di suatu tempat antara kerangka kerja dan perpustakaan. Ini memberikan semua kebutuhan yang diperlukan untuk mengembangkan aplikasi web. Berkat modularitas bawaan, suatu aplikasi dapat tetap kecil dan ramping, mengurangi waktu pengembangan dan pemeliharaan dan mengurangi beban.
DropWizard menggunakan pustaka HTTP jetty yang ada untuk menanamkan ke dalam proyek Anda tanpa perlu server eksternal. Semua proyek dropwizard memiliki metode utama untuk mengelola server HTTP bawaan.
Tautan <BR /> Situs Resmi GitHub Dokumentasi
keuntungan
Konstruksi dan startup proyek cepat
Modular
Fast yang luar biasa (setidaknya berdasarkan hasil yang diukur dengan metrik bawaan)
Jetty for HTTP, Jersey for Rest, dan Jackson untuk JSON
Ini juga mendukung perpustakaan lain, seperti kumis, logback, jdbi, validator hibernate, jambu,…
Mendukung pemantauan dengan metrik
Metode utama memulai Jetty Server, yang dapat didebug dan dipelihara dengan mudah
Kekuatan komunitas yang kuat
kekurangan
Dokumentasi dropwizard adalah sumber utama pengetahuan, tetapi tidak bagus. Anda mungkin perlu mencari dan menemukan dokumen untuk perpustakaan pihak ketiga.
Untuk beberapa alasan kesalahan diperlakukan sebagai teks biasa, jika Anda ingin hasil respons selalu menjadi JSON, ini mungkin bermasalah
Pastikan untuk menggunakan dropwizard terbaru, beberapa versi lama menggunakan perpustakaan pihak ketiga yang ditinggalkan. Dan sulit untuk meningkatkan dropwizzard awal
contoh
paket com.example.Helloworld; impor io.dropwizard.applikasi; impor io.dropwizard.setup.bootstrap; impor io.dropwizard.setup.environment; import com.example.helloworld.realth.templeateDresource; import com.example.helloworld.health.templeateCheckReCheck; Kelas Publik HelloWorldApplication memperluas aplikasi <HelloWorldConfiguration> {public static void main (String [] args) melempar Exception {new HelloWorldApplication (). Run (args); } @Override public string getName () {return "hello-world"; } @Override public void initialize (bootstrap <HelloWorldConfiguration> bootstrap) {// belum ada yang bisa dilakukan} @Override public void run (HelloWorldConfiguration Configuration, Environment Environment) {// belum ada yang bisa dilakukan}} CATATAN <BR /> Saya pribadi tidak ingin merekomendasikan kerangka kerja ini untuk proyek besar. Tetapi jika Anda ingin mencobanya, Anda tidak akan kecewa. Terutama, kerangka kerja ini menggunakan komponen web Java modern terbaik dan berkumpul menjadi kerangka kerja yang sederhana dan mudah digunakan.
Sayangnya ini juga membawa masalah. Menggabungkan perpustakaan ini dapat menyebabkan masalah yang tidak terduga. Inilah sebabnya saya kehilangan 0,5 bintang untuk itu, tanpa menilai itu sebagai skor penuh 5 bintang.
Jersey
Waktu Lahir: 2012 (Jersey 2.x)
Peringkat: 5/5
Jersey Restful Framework adalah kerangka kerja RESTFOD open source yang mengimplementasikan spesifikasi JAX-RS (JSR 311 & JSR 339). Ini memperluas implementasi JAX-RS dan menyediakan lebih banyak fitur dan alat yang selanjutnya dapat menyederhanakan layanan RESTful dan pengembangan klien. Meskipun relatif baru di Xinyi, ini sudah merupakan layanan RESTful tingkat produk dan kerangka kerja klien.
Tautan <BR /> Situs Resmi GitHub Dokumentasi
keuntungan
Dokumentasi dan contoh yang sangat baik
cepat
Routing super mudah
Integrasi junit yang halus
Secara pribadi, ketika mengembangkan layanan yang tenang, implementasi JAX-RS lebih baik daripada kerangka kerja MVC.
Ini dapat diintegrasikan ke dalam perpustakaan/kerangka kerja lain (Grizzly, Netty). Ini mungkin juga alasan mengapa banyak produk menggunakannya.
Dukung tautan asinkron
Tidak suka wadah servlet? Anda dapat menggunakannya saat menggunakan jersey.
Dukungan Wadl, XML/JSON
Termasuk dalam Glassfish
kekurangan
Jersey 2.0+ menggunakan beberapa implementasi injeksi ketergantungan yang kompleks
Mungkin bukan hal yang buruk. JERSEY 1.X IMPLEMENSI Menggunakan JAX-R yang Lebih Lama
Sejumlah besar pustaka pihak ketiga hanya mendukung Jersey 1.x, dan tidak tersedia di Jersey 2.x
contoh
paket org.glassfish.jersey.examples.Helloworld; impor javax.ws.rs.get; import javax.ws.rs.path; impor javax.ws.rs.produces; @Path ("HelloWorld") Kelas Publik HelloWorldResource {Public Static Final String Cliched_Message = "Hello World!" ; @Get@menghasilkan ("teks/polos") string publik gethello () {return cliched_message; }} anotasi
Jersey adalah pilihan saya, 5 bintang.
Kerangka Web Ninja
Waktu lahir: 2012
Peringkat: 3.5/5
Ninja Web Framework adalah kerangka kerja web Java yang penuh. Stabil, cepat, andal, tingkat produk.
Ini menyediakan semua yang mengembangkan, menguji, menerbitkan, dan memelihara aplikasi web yang tenang (servlets, guice, jpa, migrasi terbang, maven, dll.).
Sama seperti DropWizzard, Ninja Web Framework adalah tumpukan perangkat lunak terintegrasi. Anda tidak perlu membangun sendiri, cukup gunakan arketipe Maven untuk menghasilkan proyek baru, mengimpornya ke IDE dan mulai mengkode.
Tautan <BR /> Situs Resmi GitHub Dokumentasi
keuntungan
cepat
Konstruksi dan startup proyek cepat
Modular
Xml, html, rendering json
Perpustakaan lain juga didukung (seperti Guice, Logback, Guava, dll.)
Kegigihan Data yang Baik dan Caching
Tidak suka wadah servlet? Anda dapat memilih wadah yang Anda sukai
Jika Anda tidak menyukai wadah sama sekali, Anda dapat menggunakan mode mandiri dan menggunakan Jetty sebagai toples yang dieksekusi sendiri
kekurangan
Demikian juga, seperti DropWizzard, dokumentasi telah tetapi tidak cukup baik. Butuh waktu lama bagi saya untuk mengetahuinya. Kerangka kerja ini juga bergantung pada banyak perpustakaan lain, dan kadang -kadang merepotkan untuk mendapatkan informasi yang diperlukan.
Komunitas kecil yang tidak terlalu terkenal. Ada desas -desus bahwa kerangka kerja ini dibuat oleh Play 2.x pengguna yang beralih ke Scala
contoh
pengontrol paket; Public Class ApplicationController {Public Hasil Index () {Person Person = New Person (); person.name = "John Johnson"; return results.json (). render (orang); }}CATATAN <BR /> Terlihat bagus, tapi saya hanya akan membuangnya sebelum matang.
Mainkan Kerangka Kerja
Waktu Lahir: 2011
Peringkat: 4/5
Gunakan Kerangka Play untuk membuat, membangun, dan menerbitkan aplikasi web dengan dukungan Java & Scala. Menggunakan AKKA, berdasarkan arsitektur tanpa kewajiban yang ringan. Ini harus digunakan untuk aplikasi dengan CPU rendah dan konsumsi memori dalam skala besar.
Tautan <BR /> Situs Resmi GitHub Dokumentasi
keuntungan
Mudah dikembangkan
Cepat, tetapi tidak secepat kerangka kerja lainnya
Berdasarkan Netty, ia mendukung I/O yang tidak memblokir. Ini sangat bagus saat menangani panggilan jarak jauh secara paralel.
Komunitasnya besar
Konstruksi dan startup proyek cepat
Modular
MVC
Istirahat, JSON/XML, soket web, I/O non-blocking
Segarkan kembali browser untuk melihat perubahan terbaru
Dukung async
Ada buku yang diterbitkan
kekurangan
Versi 2.0 adalah kerangka kerja Java yang paling kontroversial. Beralih ke Scala membuat beberapa pengembang Java di luar.
Tidak kompatibel ke belakang; Mainkan 2.x ditulis ulang
Itu dikenal sebagai ringan, tetapi agak kembung
Alat Build SBT. Dikenal sebagai Maven Killer, tetapi tidak pernah unggul untuk menggantinya. Sulit untuk dipelajari dan dikonfigurasikan
Non-servlet
Melanggar perubahan di rilis
contoh
Paket pengontrol impor play.api._import play.api.mvc._ Aplikasi kelas memperluas pengontrol {def hello (name: string) = action {ok ("hello" + name + "!")}}CATATAN <BR /> Tidak peduli berapa banyak yang saya keluhkan, saya masih suka dan memilih kerangka kerja ini terlebih dahulu. Sayangnya, saya hanya bisa memberikannya 4 bintang. Saya sangat percaya bahwa kerangka kerja berdasarkan JAX-RS lebih cocok untuk layanan web yang tenang.
RESEXPRESS
Waktu Lahir: 2009
Peringkat: 3/5
RestExpress adalah pembungkus tumpukan Netty HTTP yang tidak memiliki kontainer untuk membuatnya lebih mudah untuk membuat layanan Java Restful.
Tujuan dari RESTEXPRESS adalah untuk mendukung praktik REST yang terbaik.
Link
GitHub
keuntungan
Microframework nyata
Kinerja teratas, cepat dan dapat diandalkan
XML/JSON
Salah satu kerangka kerja yang tertua dan paling stabil
kekurangan
Tidak ada dokumentasi
Hampir tidak ada dukungan
Komunitas yang sangat kecil
contoh
paket com.example; impor java.io.ioException; impor io.netty.handler.codec.http.httpmethod; impor org.restexpress.RestExpress; kelas publik utama {public static resexpress starterver (string [] args) melempar ioException {resexpress server = baru resexpress (); MyResource r = MyResource baru (); server.uri ("/myapp/myResource", r) .method (httpmethod.get) .noserialization (); server.uri ("/myapp/myResource", r) .method (httpmethod.post); Server.Bind (8080); server pengembalian; } public static void main (string [] args) melempar Exception {resexpress server = starterver (args); System.out.println ("Hit Enter untuk menghentikannya ..."); System.in.read (); server.shutdown (); }}Catatan <BR /> Meskipun kerangka kerja ini sangat cepat, saya juga tidak ingin merekomendasikannya. Kurangnya dokumentasi dan kurangnya dukungan menjadikannya kerangka kerja yang terbelakang. Berikan 3 bintang untuk kecepatan.
Restlet
Waktu Lahir: 2005
Peringkat: 4.5/5
Restlet membantu programmer Java membangun API web berskala besar dan cepat yang sesuai dengan pola arsitektur yang tenang.
Ini menyediakan sistem perutean dan penyaringan yang kuat. Klien/Server Java API yang terpadu memenuhi semua platform utama (Java SE/EE, Google Appengine, OSGI, GWT, Android) dan menyediakan ekstensi yang tak terhitung jumlahnya untuk memenuhi kebutuhan programmer.
Sejauh yang saya tahu, ini adalah kerangka kerja web Java Restful pertama. Banyak perusahaan menggunakannya, tetapi Anda mungkin belum pernah mendengarnya, seolah -olah itu tidak lagi terlihat.
Tautan <BR /> Situs Resmi GitHub Dokumentasi
keuntungan
kuat
Kerangka kerja tingkat perusahaan
Java SE Multi-Platform, Java EE, Google Web Toolkit, Google Appengine, Android, Lingkungan OSGI
Dukung JAX-RS (seperti Jersey)
Dukungan Restful Paling Lanjutan
Modular
Mendukung perpustakaan lain
Pengembangan telah aktif
Pengikatan URL pintar, perutean URI berfitur lengkap
Ada buku terkait
kekurangan
Kurva belajar yang sangat curam
Komunitas tertutup, buka bahkan di stackoverflow
Tidak lagi populer, lebih karena kerangka kerja dan jersey
contoh
Kelas Publik Part03 memperluas serverResource {public static void main (string [] args) melempar Exception {// Buat server http dan dengarkan di port 8182 server baru (protocol.http, 8182, part03. class) .start (); } @Get ("txt") public string toString () {return "hello, world"; }}Catatan <BR /> Meskipun kerangka kerja ini telah populer sepanjang waktu, saya tidak bisa memberikannya 5 bintang untuk penyelesaiannya saat ini.
Restx
Waktu Lahir: 2013
Peringkat: 3.5/5
RESTX adalah kerangka Java Rest Open Source yang ringan, modular, multi-fitur, dan super cepat.
Tautan <BR /> Situs Resmi GitHub Dokumentasi
keuntungan
Cepat, ringan
Mudah dibangun
Microframework nyata
Modular
Mendukung perpustakaan lain
Mendukung MongoDB
kekurangan
Dokumentasi yang membingungkan yang tidak ramah. Saya mengharapkan dokumentasi yang lebih baik untuk jenis kerangka kerja ini
Terlalu muda
Asinkron asinkron belum didukung
contoh
@Get ("/message/{id}") Pesan publik sayshello (string id, // path param string who // query param) {return new message (). SetMessage (string.format ("Hello %s, ini %s", who, datetime.now (). ToString ("hh: mm: ss")); } @Post ("/pesan/{id}") Pesan publik Sayshello (string id, // path param pesan msg // body param) {return msg.setMessage (string.format (" %s @ %s", msg.getMessage (), datetime.now (). Tostring ("hh: mm: ss")). }CATATAN <BR /> Jujur, saya tidak menghabiskan banyak waktu untuk kerangka kerja ini. Tidak ada gunanya menghabiskan terlalu banyak upaya untuk kerangka kerja lain, maksud saya, pasar Java Framework menjadi semakin terfragmentasi, seperti pasar JavaScript, tren ini harus dihentikan.
Kerangka kerja percikan
Waktu Lahir: 2011
Peringkat: 3.5/5
Jangan bingung dengan kerangka kerja Big Data Apache Spark, kerangka kerja Spark di sini adalah kerangka kerja Java yang ringan untuk pengembangan yang cepat (50% pengguna Spark menggunakan Spark untuk membuat API REST). Ini terinspirasi oleh kerangka kerja Ruby Sinatra.
Ini memiliki kernel yang diminimalkan kurang dari 1m dan menyediakan semua fitur dasar untuk membangun aplikasi web yang tenang atau tradisional.
Tautan <BR /> Situs Resmi GitHub Dokumentasi
keuntungan
Cepat, ringan
Prototipe cepat yang sangat baik
Mudah dibangun
Sering digunakan dengan angularjs
Microframework nyata
Menggunakan Jetty
Dapat digunakan dalam wadah atau dijalankan secara mandiri
kekurangan
Dokumentasi bisa lebih baik, itu tidak cocok untuk pemula
Tidak cocok untuk proyek besar
Komunitas kecil
contoh
Impor static spark.spark.*; kelas publik helloWorld {public static void main (string [] args) {get ("/hello", (req, res) -> "hello world"); }}Catatan <BR /> Kerangka kerja ini cocok untuk pengembangan awal. Terutama digunakan sebagai proyek kecil atau prototipe.