Sebagai seorang programmer Java yang profesional, saya sudah mencoba memahami - mengapa kebencian terhadap Java untuk aplikasi web modern?
Saya telah memperhatikan tren bahwa dari startup web modern, sebagian kecil dari mereka tampaknya menggunakan Java (dibandingkan dengan popularitas keseluruhan Jawa). Ketika saya bertanya beberapa hal tentang ini, saya biasanya menerima tanggapan seperti, "Saya benci Jawa dengan penuh semangat." Tapi sepertinya tidak ada yang benar-benar dapat memberikan jawaban yang pasti
Saya juga mendengar komunitas startup web yang sama ini merujuk secara negatif ke pengembang Java - kurang lebih menyiratkan bahwa mereka lambat, tidak kreatif, lama.
Akibatnya, saya menghabiskan waktu bekerja untuk mengambil Ruby / Rails, pada dasarnya untuk mencari tahu apa yang saya lewatkan. Tetapi saya tidak dapat menahan diri untuk berpikir, "Saya bisa melakukan ini lebih cepat jika saya menggunakan Java," terutama karena tingkat pengalaman relatif saya.
Tetapi juga karena saya belum melihat sesuatu yang kritis "hilang" dari Jawa, mencegah saya membangun aplikasi yang sama.
Yang membawa saya ke pertanyaan saya :
Mengapa Java tidak digunakan dalam aplikasi web modern?
Apakah itu kelemahan bahasa?
Apakah ini stereotip Jawa yang tidak adil karena sudah ada sejak lama (sudah dikaitkan secara tidak adil dengan teknologi yang lebih lama, dan tidak menerima pengakuan atas kemampuan "modern" -nya)?
Apakah stereotip negatif pengembang Java terlalu kuat? (Java tidak lagi "keren")
Apakah aplikasi yang ditulis dalam bahasa lain benar-benar lebih cepat dibangun, lebih mudah dirawat, dan apakah kinerjanya lebih baik?
Apakah Java hanya digunakan oleh perusahaan besar yang terlalu lambat untuk beradaptasi dengan bahasa baru?
sumber
Jawaban:
Startup modern perlu memasuki pasar sesegera mungkin. Mereka tidak perlu menghabiskan waktu sekitar enam bulan untuk merilis aplikasi web Java mereka.
Twitter misalnya dibangun menggunakan Rails / Ruby tetapi setelah menjadi tidak dapat dihilangkan, mereka bermigrasi ke JVM.
Belum lagi bahwa proses pengembangannya tidak produktif: code -> compile -> deploy ketika sedang dalam frameworks seperti (Rails / Django / Grails): jalankan testing server -> code -> ubah sesuatu dan lihat apa yang terjadi.
Berita baiknya adalah JRebel memungkinkan Anda melihat perubahan kode secara instan.
sumber
Dalam pengalaman saya, Java untuk aplikasi web berlebihan untuk aplikasi kecil. Blog sederhana dengan satu tabel basis data menampung entri blog, misalnya, dapat dilakukan dengan sesuatu yang lebih sederhana.
Saya biasanya melihat Java melakukan jauh lebih baik dalam aplikasi web yang jauh lebih besar (think bank dan perusahaan asuransi) yang berkomunikasi dengan sejumlah sistem lain (seperti backframe mainframe dan basis data serta sistem pemrosesan bets latar belakang layanan web peer ... semua dalam aplikasi yang sama).
Dari apa yang saya lihat, arsitektur aplikasi web JavaEE biasanya lebih dari yang dibutuhkan untuk aplikasi web kecil / sederhana.
sumber
Saya memprogram aplikasi web java selama 10 tahun sebelum saya beralih ke python, 4+ tahun yang lalu. Saya merasa bahwa saya jauh lebih produktif menggunakan python dan bisa menyelesaikan lebih banyak dalam waktu yang lebih singkat, dan jujur, saya jauh lebih bahagia ketika saya mengembangkan python. Berikut adalah beberapa alasan mengapa saya pikir python lebih baik daripada Java berdasarkan pengalaman pribadi saya, milage Anda mungkin sangat.
Kerangka Web:
Ketika saya pertama kali memulai pemrograman aplikasi web di Java, Struts baru saja keluar, dan itu tidak bagus, tetapi itu adalah hal terbaik yang tersedia. Saya membuat banyak aplikasi struts, dan beberapa di framework lain sepanjang jalan. Setiap kali kerangka baru keluar (Tapestry, Wicket, GWT, stripe, grails, AppFuse, Play, RichFaces, Spring, dll), saya akan mencobanya dan melihat apakah itu lebih baik, dan seringkali hanya sedikit lebih baik , dan terkadang tidak lebih baik sama sekali. Saya harus mengatakan bahwa kerangka permainan adalah langkah ke arah yang benar.
Baterai tidak termasuk:
Salah satu bagian yang paling menjengkelkan di Jawa adalah kenyataan bahwa sebagian besar perpustakaan yang Anda gunakan tidak termasuk dalam java itu sendiri, Anda harus memasukkan satu ton lib pihak ke-3 dari tempat-tempat seperti apache commons. Jika Anda menggunakan sesuatu seperti hibernate dengan perpustakaan besar lainnya, Anda berakhir di neraka ketergantungan Jar, di mana hibernate membutuhkan satu versi jar, dan sesuatu yang lain membutuhkan versi lain. Jika Anda memuat file jar dengan urutan yang salah, Anda kurang beruntung. Anda perlu bergantung pada alat-alat seperti pakar, dan ivy untuk mengelola dependensi Anda, dan ini hanya membawa lebih banyak dependensi ke dalam proyek Anda yang menghasilkan proyek-proyek yang sangat besar. Saya punya beberapa file perang 100MB + file perang untuk aplikasi web paling sederhana.
Terlalu banyak opsi:
Untuk beberapa alasan tampaknya ada terlalu banyak cara berbeda untuk melakukan hal yang sama di Jawa. Ada lebih dari 38 kerangka kerja web yang berbeda untuk java menurut wikipedia ( http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java ) dan 23 ORM yang berbeda ( http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software# Java ) hanya untuk menyebutkan beberapa contoh. Jika Anda melihat bahasa lain mereka memiliki jumlah yang lebih masuk akal. Beberapa orang berpikir bahwa memiliki banyak opsi adalah hal yang baik, tetapi hal itu tidak mengarah pada banyak usaha sia-sia di komunitas pengembang, semua orang menciptakan kembali roda yang sama, dan jika Anda adalah orang baru dalam bahasa yang Anda miliki terlalu banyak opsi untuk dipilih.
Server aplikasi:
Aplikasi web Java sangat berat, dan membutuhkan banyak sumber daya untuk dijalankan. Mereka terutama lapar akan ingatan. Seperti perangkat lunak apa pun, mereka dapat disetel untuk mengurangi jejak sumber daya mereka, tetapi dibandingkan dengan bahasa lain, pengaturan di luar kotak mereka mengerikan. Di masa lalu saya, saya telah menggunakan weblogic, websphere, Jboss, tomcat, dan jetty. Saya hanya menggunakan tiga yang pertama ketika saya dipaksa untuk menggunakan EJB, tetapi bahkan jika Anda tidak menggunakan EJB mereka adalah server aplikasi besar dan kadang-kadang sulit untuk mengkonfigurasi dan mulai berjalan dengan benar. Tomcat dan Jetty jauh lebih baik dan lebih mudah diatur, tetapi masih merupakan sumber daya babi.
Hosting Aplikasi:
Jika Anda tidak menjalankan server Anda sendiri, sangat sulit untuk menemukan hosting bersama untuk aplikasi java Anda dengan harga yang wajar. Alasan utamanya adalah karena aplikasi java memerlukan lebih banyak memori dibandingkan dengan bahasa lain, sehingga tidak masuk akal bagi penyedia hosting bersama untuk menghabiskan RAM berharga mereka menjalankan situs java, ketika mereka bisa menjalankan 5 situs php di tempat yang sama. Itu berarti ada lebih sedikit penyedia yang menawarkan hosting java, yang pada gilirannya berarti biaya yang lebih tinggi untuk menjalankan situs web Anda.
Waktu pengembangan:
Ketika saya berkembang di java, saya mendapati diri saya jauh lebih lambat dari apa yang bisa saya lakukan dengan python. Saya perlu melakukan perubahan, mengkompilasi, memindahkan kembali dan kemudian menguji, dan ini memperlambat proses berulang. Saya tahu ada cara untuk membuat ini lebih cepat, tetapi bahkan yang terbaik, saya merasa jauh lebih lambat dari apa yang bisa saya lakukan dengan python.
Ada juga kode boilerplate jauh lebih sedikit untuk melakukan hal yang sama dengan python, jadi saya menghabiskan lebih sedikit waktu mengembangkan kode juga.
Java hanya terasa berlebihan di banyak bagian, Banyak API dan antarmuka hanyalah cara rumit untuk apa yang ingin Anda lakukan. Dan semua orang dan saudara lelaki mereka mengira mereka adalah arsitek java dan ini menghasilkan sistem rumit besar yang sulit digunakan dan dikembangkan.
IDE:
Ketika saya sedang berkembang di Jawa, saya merasa terjebak dengan IDE, saya hilang tanpa itu. IntelliJ adalah IDE terbaik di pasaran, dan sulit untuk beralih ke python karena tidak ada yang seperti itu untuk python. Jadi alih-alih IDE, saya hanya menggunakan textmate, yang hanya editor teks biasa. Awalnya sulit, tetapi karena itu hanya editor teks, itu adalah aplikasi yang sangat cepat dan responsif. Saya dapat membuka seluruh proyek saya dalam beberapa detik, sedangkan ketika saya ingin membuka proyek dalam IDE itu bisa memakan waktu satu menit atau lebih, dengan mesin dengan ton RAM. Pembuat IntelliJ keluar dengan editor python bernama pycharm, saya membelinya ketika pertama kali keluar, dan itu hebat. Tetapi yang saya sadari adalah bahwa saya tidak memerlukan IDE untuk python, saya baik-baik saja dengan editor teks. Ketika saya kembali bekerja pada aplikasi web Java yang harus saya lakukan dari waktu ke waktu, saya mencoba menggunakan editor teks, tetapi saya belum cukup menguasainya. Saya pribadi membutuhkan IDE untuk Java lebih karena jika saya mengacaukan sesuatu, dibutuhkan waktu lebih lama untuk mengkompilasi ulang dan memindahkan, yang memperlambat saya.
ORM:
Ketika saya pertama kali mulai menggunakan Hibernate sebagai ORM, saya pikir itu hebat, itu punya masalah, dan itu tidak sempurna, tapi itu lebih baik daripada apa yang saya lakukan sebelumnya. Saya senang dengan itu, sampai saya melakukan aplikasi dengan ORANG Django pada proyek python, dan itu membuka mata saya, begitulah cara kerja ORM. Setelah proyek itu saya kembali ke hibernate, dan saya merasa kecewa, dan ingin kembali ke ORM Django. ORM python besar lainnya adalah sqlalchemy, yang mirip dengan ORM Django, tetapi sedikit berbeda. Saya memiliki pengalaman terbatas dengan ORM ROR, tetapi dari apa yang saya ingat, itu cukup bagus juga.
Templat:
Sistem templating web di Jawa tidak begitu bagus, dan saya pikir saya telah mencoba semuanya (ubin, freemarker, kecepatan, dll). Kebanyakan dari mereka hanya menawarkan fungsionalitas dasar dan sulit untuk diajak bekerja sama. Di sisi Python, dua favorit saya adalah template Django dan Jinja2, mereka memiliki semua yang saya butuhkan dalam mesin templating, dan sangat mudah digunakan.
sumber
Start Up ingin yang mengkilap. Apa pun yang mengkilap adalah: RoR, Groovy, Grails, OOP dengan PHP, Foobar, Wibble, Narf, dll.
Perusahaan ingin stabil, andal, dan dapat diskalakan: Java dan .NET sesuai dengan tagihan itu (bila dilakukan dengan benar).
Penampilan saat ini: Layanan Keuangan. Platform: ColdFusion (pada dasarnya Java Tag Library) dan Java.
Pertunjukan sebelumnya:
Ini semua adalah situs dengan volume tinggi dan keamanan tinggi. Tidak seorang pun di perusahaan-perusahaan ini yang pernah mempertimbangkan PHP, beberapa memandang RoR dan melihat terlalu banyak masalah. Perusahaan 401k memiliki perusahaan sejenis yang menjalankan aplikasi .NET dengan pengembang yang kompeten, aplikasi ini terus macet setiap minggu. Mereka akhirnya mengubahnya menjadi Jawa dan memperoleh stabilitas.
Satu-satunya orang yang memandang rendah Jawa adalah mereka yang tidak memiliki atau sedikit pengalaman aktual dengannya atau telah terlibat dengan implementasi yang buruk dan sekarang malu-malu. Mereka melihat mengkilap dan membayangkan jika semua anak keren menggunakannya, mengapa tidak saya?
sumber
Tambahan untuk jawaban FrustratedWithFormsDesigner : Karena saya kira pertanyaan Anda lebih mengarah ke situs yang lebih kecil, ada aspek penting yang perlu Anda pertimbangkan untuk banyak orang: Hosting ada di mana-mana untuk PHP tetapi lebih sulit untuk situs Java atau ASP. Namun ini bukan cacat dari bahasa-bahasa tersebut.
sumber
Java benar - benar digunakan untuk pengembangan aplikasi web modern. Terutama sekali Anda sampai pada ujung spektrum aplikasi web yang agak lebih besar / lebih kompleks / dapat diskalakan.
Jika Anda tertarik dengan alat dan kerangka kerja modern yang produktif, perhatikan:
Tapi saya pikir pengembangan web paling modern pada platform JVM kemungkinan akan dilakukan dalam salah satu bahasa JVM baru daripada menggunakan Java secara langsung, dengan Java hanya menyediakan tulang punggung dalam hal perpustakaan yang mendasarinya dan infrastruktur back-end. Ada banyak pengembangan web yang terjadi di Groovy ( Grails ), Scala ( Lift and Play ), JRuby ( JRuby on Rails ) dan Clojure ( Noir , Ring / Enlive + banyak kerangka kerja kustom) untuk menyebutkan beberapa.
Dengan semua inovasi yang terjadi pada ruang bahasa JVM baru, saya pribadi curiga bahwa Java pada akhirnya akan menjadi "assembler pemrograman sisi server".
sumber
Apakah Google, Amazon, atau LinkedIn dianggap modern?
Java digunakan untuk aplikasi web modern. Jika Anda melihat perusahaan, itu adalah bahasa yang paling banyak digunakan untuk aplikasi web (internal).
Yang mengatakan, Jawa melewati masa itu standar pengembangan web itu mencoba menjadi segalanya untuk semua orang (bisa dibilang masih melakukan). "Don't repeat yourself" adalah tanggapan terhadap xml hell dan siklus pengembangan Java web yang lama. Akibatnya, Java (EJB, Struts, JSF, dll) menjadi dipandang sebagai hal yang semua paradigma baru coba atasi.
Java, bahasanya adalah verbose. Itu adalah pro dan kontra (bagus untuk pemeliharaan, menyebalkan untuk dev). Ada sejumlah fitur bahasa modern yang belum membuatnya menjadi Java yang dapat memangkas waktu pengkodean secara substansial (properti, acara, penutupan, generator, pemahaman daftar, dll). Jadi, ini bisa membuat frustasi ketika datang dari bahasa yang lebih modern. Yang mengatakan, mereka sulit untuk menambahkan ke bahasa dewasa tanpa menjadi sarang tikus yang menjadi C #.
Banyak bahasa yang digunakan dalam pengembangan web modern diketik secara dinamis. Ini memungkinkan tooling yang secara dinamis dapat memuat kembali kode seperti yang tertulis (ini lebih sulit untuk dicapai dalam bahasa statis - jrebel). Karena pengembangan web cocok untuk iterasi yang cepat, pemuatan dinamis adalah kemenangan besar. Ini secara signifikan mengurangi siklus pengembangan pada proyek-proyek greenfield dan membuatnya lebih mudah untuk mendapatkan UI dan UX yang tepat (percobaan dan kesalahan secara alami).
Bahasa statis juga memiliki tempatnya. Untuk logika backend yang kompleks, harus dijalankan selama bertahun-tahun, harus menskala tanpa masalah, harus sangat cepat, dan harus sepenuhnya bebas kesalahan, bahasa yang diketik secara statis (seperti Java atau bahkan C) lebih disukai.
Selain itu, seiring dengan bertambahnya jumlah / omset pengembang dan produk menjadi matang, kemungkinan orang yang bermaksud baik memperkenalkan bug yang meroket. Ketegasan dan disiplin yang diterapkan proyek Java yang dirancang dengan baik (antarmuka, pola, dan air suci untuk vampir php :)) menegakkan membantu mengurangi risiko jangka panjang. Sementara, ini juga dapat dicapai melalui pengujian unit, jaring pengaman yang berasal dari pemeriksaan statis (dan analisis statis seperti findbugs dan dentang) memberikan tingkat cakupan kode bawaan yang sulit untuk ditiru dengan tes tulisan tangan. Jangan salah paham, harus ada tes unit dan tes fungsional, tetapi organisasi nyata tidak pernah mencapai cakupan 100%. Untuk apa yang mereka periksa, analisa statis lakukan.
Jadi, dalam proyek-proyek besar (sebagaimana didefinisikan lebih oleh ukuran tim daripada ukuran kode), di mana ada interoperasi yang kompleks antara potongan kode yang dikembangkan secara independen, bahasa seperti Jawa masih lebih disukai. Contohnya termasuk aplikasi web besar / kompleks seperti yang ada di broker keuangan (ameritrade), pertukaran keuangan (nasdaq, nyse, mungkin london setelah kegagalan .net), perbankan online (hampir semuanya), email (google), lelang (ebay) , dll.
Dari perspektif kinerja dan skala, tidak ada yang berada di puncak platform Java untuk kombinasi skalabilitas dan kinerja untuk aplikasi web (tergantung pada bagaimana Anda menghitung partisi aplikasi Facebook). Twitter, misalnya, harus menulis ulang sebagian besar infrastruktur Ruby-nya di Scala di Java VM untuk mengembalikan paus yang gagal kembali ke laut. Saya pernah mendengar contoh besar lainnya, tetapi mereka menghindari saya sekarang.
Ini juga layak mempertimbangkan keamanan. Sementara plugin browser Java telah menderita kerentanan keamanan yang adil, platform java itu sendiri adalah salah satu platform yang lebih aman dibuat. Aplikasi web Java memiliki reputasi sangat aman. Praktik pengkodean, pustaka, dan arsitektur memiliki kesalahan panjang yang membuat serangan seperti injeksi sql atau buffer overflows menjadi mungkin. Sementara platform web lainnya (rel) memiliki reputasi keamanan yang baik, tidak ada yang melampaui Java.
Intinya, sebagian besar aplikasi web sederhana secara teknis. Untuk sederhana, Java sering berlebihan (seperti di masa lalu ketika kita menulisnya di C :)). Namun, jika webappnya kompleks (backend atau lainnya) atau diperkirakan memiliki 100+ pengembang, Java sulit dikalahkan.
-
Pada catatan pribadi, saya banyak menggunakan Grails karena itu memberi saya yang terbaik dari kedua dunia (hal yang sama dapat dikatakan tentang JRuby yang saya dengar semakin populer di dunia Ruby).
BTW - Saya menemukan peningkatan PHP benar-benar membingungkan. PHP sebagai bahasa adalah setara kasar dengan perl dalam keterbacaan dan VB dalam kualitas hasil. Ini mendorong praktik-praktik mengerikan, nyaris tidak mungkin untuk dipertahankan, perpustakaan pihak ke-3 jarang berfungsi seperti yang diharapkan, dan memiliki sintaks yang akan mendorong Larry Wall ... well ... tembok. Satu-satunya penjelasan yang saya dapat menyulap adalah bahwa ia cocok untuk belajar tambahan (seperti VB). Dengan kata lain, Anda dapat mencapai sesuatu yang bermanfaat mengetahui sedikit tentang pemrograman / administrasi dan Anda dapat memperluas pengetahuan Anda sedikit demi sedikit. Ada banyak yang bisa dikatakan untuk itu dari perspektif adopsi. Namun, bagi siapa saja yang setiap orang harus mendukung atau mengganti salah satu dari miliaran aplikasi VB yang ditulis oleh "programmer" di dunia perusahaan / mfg, Anda mungkin menggelengkan kepala dan merencanakan pensiun Anda. :)
sumber
Yah, saya baru-baru ini bertemu dengan seorang pria Java yang sangat bersemangat dengan proyek Data Spring baru, karena betapa sedikit kode yang diperlukan untuk mendapatkan akses CRUD dasar untuk DB Anda.
Saya dapat membangun aplikasi CRUD menggunakan Rails (bukan hanya akses db, tetapi juga tampilan dan pengontrol) dengan beberapa perintah.
(Dari atas kepala saya: proyek baru, 1 perancah perintah per entitas, 1 perintah untuk memigrasi database, 1 perintah untuk memulai server.)
Itu tidak ada hubungannya dengan bahasa, itu semua tentang alat. Dan tampaknya bahasa dinamis cenderung memiliki alat dan kerangka kerja yang menghapus banyak kode boilerplate. (Untuk mengganti kekurangan IDE yang kuat yang menghasilkan boilerplate untuk kami.)
Saya juga merasa bahwa bahasa yang dinamis cenderung membuat penulisan alat dan kerangka kerja seperti itu jauh lebih mudah. Saya bisa grok kode untuk mengatakan, Padrino atau Rails (ruby web frameworks) jauh lebih mudah daripada saya bisa grok kode untuk mengatakan Spring Roo. Ini bisa disebabkan oleh fakta bahwa saya tahu Ruby jauh lebih baik daripada saya tahu Java.
sumber
Jawa telah diposisikan dalam beberapa tahun terakhir sebagai "perusahaan". Yang ada di sisi lain dari spektrum apa yang dibutuhkan startup. Dalam pengembangan aplikasi web Anda memerlukan 4 hal - akses basis data tanpa rasa sakit, manipulasi string yang hebat, sintaksis gula dan proses berulang yang cepat untuk membuat banyak perubahan kecil yang dibutuhkan aplikasi Anda.
Kinerja, skalabilitas, dan stabilitas sedikit lebih rendah pada daftar prioritas.
Juga Java adalah bahasa yang sangat tidak terhitung untuk kode. Ia mendapat kemampuan revolusioner untuk menggunakan string dalam pernyataan switch baru kemarin. Dan javascript adalah bahasa yang sangat hacker sehingga setelah mengembangkan frontend Anda, Anda merasa sangat kendala ketika Anda kembali ke java.
Jadi saya kira ini adalah alasan webstartup menghindari java.
sumber
Syntax sugar
Java praktis tidak dapat digunakan untuk DSL, misalnya, konfigurasi Play dan file rute bukan file Java, itu dalam sintaksis asing yang tidak kurang dari mengatakan pengaturan django.py dan urls.py; tidak ada daftar pemahaman; tipe data penting (misalnya peta, daftar) tidak diimpor secara default; satu-kelas-per-file bodoh benar-benar menghalangi; dan Java API cenderung bertele-tele. Selain itu, Anda tidak dapat menggunakan enum ketika Anda beralih di antara string yang Anda terima dari parameter GET / POST.IRepository<T>
denganIQueryable<T> Where(Expression<Func<T, Boolean> Expression)
. Saya ingin tahu apakah mereka akan menjadi lebih populer di Jawa ketika mendapat lambdas? Mungkin ini adalah zona nyaman tetapi Java hanya terasa pas - dan sepertinya saya telah diberikan bit yang cukup untuk membangun 50 jenis mobil tanpa jaminan setiap 2 bagian akan cocok bersama.Saat ini saya bekerja di sebuah perusahaan yang memiliki beberapa pengembang "Aku benci Jawa". Ini digunakan untuk mengejutkan saya juga. Saya tentu membenci semua menimbun teknologi yang tersedia dengan Java. Ini membuat pengambilan keputusan terlalu sulit. Ini seperti Ketika Anda memiliki terlalu banyak pilihan, Anda tidak punya pilihan. Anda harus menghabiskan waktu dengan 100-an kerangka kerja untuk benar-benar datang dengan kerangka kerja yang cocok untuk Anda. Arsitektur Servelt standar cukup rumit untuk sebagian besar aplikasi. Ini tidak terjadi dengan Ruby, Django dan lainnya. Mereka lebih merupakan kerangka tunggal daripada bahasa.
Keluhan terbesar yang saya dengar dari pengembang
Jadi secara keseluruhan Jawa memaksakan kurva curam di awal proyek, yang berarti terlalu banyak uang untuk dilakukan. Tambahkan ke ini sebuah komunitas besar yang melekat pada java, masing-masing berpikir dengan cara yang berbeda dan tidak ada yang benar-benar menusuk kepala seluruh komunitas. Mereka juga tidak melihat pembicaraan dan konferensi yang diadakan oleh komunitas memamerkan semua hal baru yang keren. Tidak ada buku keren baru. Java sepertinya akan turun karena digunakan untuk memecahkan terlalu banyak masalah yang berbeda beberapa tahun yang lalu.
sumber
Kerangka kerja untuk melakukan pengembangan web Java memiliki sedikit kurva belajar, mereka sering kali terlalu banyak untuk apa yang Anda butuhkan, dan banyak tipuan yang diperlukan untuk membuat sesuatu berfungsi hanya ... menyakitkan ... untuk dikerjakan.
Saya dulu bekerja untuk sebuah perusahaan yang melakukan pengembangan Spring / Java, dan saya menemukan kerangka kerja yang paling rumit. Saya tidak punya banyak hal yang menyenangkan untuk dikatakan tentang kerangka kerja Spring, kecuali saya punya teman yang pernah melakukan pengembangan Struts dan dia pikir Struts bahkan lebih buruk. Kerangka kerja web tidak seperti melakukan aplikasi desktop atau aplikasi seluler (misalnya: android), dan memiliki banyak ide abstrak yang membutuhkan waktu untuk benar-benar dipahami (walaupun, tentu saja, itu memberi Anda banyak daya dan kemampuan jika Anda Sedang pro dan melakukan sesuatu yang sangat kompleks seperti aplikasi kelas perusahaan). Saya suka pemrograman java untuk perangkat seluler atau desktop, tetapi java untuk aplikasi web? Tidak terlalu banyak.
Saya belum melakukan pemrograman apa pun secara pribadi di Ruby / Rails, tetapi teman saya yang dulu melakukan Struts sekarang melakukan pemrograman web Ruby dan bersaksi bahwa hal-hal yang sulit dilakukan dalam pemrograman web Java memerlukan kode dan kompleksitas yang jauh lebih sedikit untuk dicapai dalam Rubi. Tentu saja ada kurva belajar untuk berbagai sintaks dan aturan bahasa, tetapi untuk membuat prototipe aplikasi, ada kelebihan dalam hal berapa banyak kode yang diperlukan untuk mencapai hasil yang diinginkan. Seperti yang disebutkan orang lain, skalabilitas adalah masalah yang harus dipertimbangkan juga, dan salah satu alasan mengapa aplikasi yang lebih dewasa tidak sering dilihat dalam bahasa yang lebih modern.
sumber
Turun ke biaya dan tren. Startup Web 2.0 dibuat oleh visioner di bawah 30 yang memiliki lebih banyak talenta daripada uang (tentu saja saya menggeneralisasi, tetapi inilah yang akan Anda lihat "rata-rata"). Dia akan menggunakan bahasa yang dia kenal karena dia melakukan pemrograman (bersama dengan mungkin beberapa teman). Dia kemungkinan besar adalah programmer otodidak.
Java telah ditargetkan sebagai lingkungan perusahaan (oleh Java, maksud saya bahasa, kerangka kerja, dan standar). Ada banyak alat mahal yang ingin dijual oleh perusahaan IBM, Oracles, dan BEA.
Langkah-langkah untuk menjadi mahir di Jawa rumit dan / atau mahal. Saya tahu lanskap berubah di sana, tetapi apakah sudah terlambat?
Setelah startup, traksi meningkat. Merekrut pengembang berbakat sulit. Kebanyakan program "menjadi programmer dalam enam minggu" mengajarkan Java (atau .NET) dan pasar dipenuhi dengan "programmer enam minggu" (anehnya saya telah melihat pengembang dengan resume yang mengatakan pengalaman 7 tahun yang masih menunjukkan pengetahuan tentang enam programmer minggu). Menggunakan lingkungan non-mainstream non-perusahaan dapat menjadi filter alami untuk programmer enam minggu. Dibutuhkan dedikasi dan investasi pribadi untuk mempelajari Ruby atau Scala di luar persyaratan pekerjaan. Ini adalah indikator terbesar bagi saya tentang potensi calon.
Pengetahuan datang dengan pengalaman tetapi seorang programmer yang berdedikasi / bersemangat akan mendapatkan pengetahuan lebih cepat (rata-rata) daripada seseorang tanpa dedikasi / gairah itu. Persis seperti anak yang suka bermain gitar akan menjadi lebih baik lebih cepat daripada anak yang mengambil pelajaran karena ayahnya yang membuatnya.
sumber
Java terlalu rumit. Saya melakukan banyak pekerjaan PHP dan hanya lebih mudah dan lebih cepat untuk sebagian besar situasi. Kemampuan untuk hanya SSH ke server membuka file php membuat perubahan simpan dan dilakukan sangat bagus. Beberapa aplikasi Java yang telah saya kerjakan selalu membutuhkan restart untuk perubahan yang paling sederhana. (tidak mengatakan itu selalu terjadi dengan apa yang saya delt). Selain itu PHP hosting murah dan tersedia.
Saya juga berpikir apa yang Anda miliki setidaknya dengan PHP adalah banyak pengembang yang menyukai saya memulai 14/15 tahun yang lalu dengan HTML statis. Seiring perkembangannya, kami mulai menambahkan PHP ke situs kami karena itu mudah, sederhana, dan terjangkau. Selama bertahun-tahun bahasanya telah berkembang dan telah mengembangkan kemampuannya jauh melampaui permulaannya yang sederhana dan sekarang berusaha keras untuk menjadi apa yang saya pikir banyak hal yang sebenarnya tidak.
Di sisi lain sebagian besar pengembang PHP yang saya kenal melihat Jawa sebagai gorila 800lb yang terlalu rumit, hampir seperti mengeluarkan truk semi beroda 18 untuk pergi ke toko bahan makanan dan mendapatkan sepotong roti.
Saya sudah mencoba belajar Jawa, kesan pertama saya di mana itu sangat panjang lebar dan mendorong terowongan karpal. Selain itu mulai meninggalkan saya dengan banyak pertanyaan yang mungkin tampak mudah bagi seorang veteran Jawa. OpenJDK, atau Sun? Tomcat, atau Glassfish, atau? Plus tampaknya setiap pengantar ke buku Java mulai Anda menulis kode untuk baris perintah. Saya pikir sebagian besar orang akhir-akhir ini mendapati bahwa tunda tidur.
sumber
Tim saya dan saya saat ini sedang mengembangkan aplikasi web greenfield di Java 6 + Stripes. Dalam setahun terakhir saya juga bekerja pada aplikasi web greenfield lain menggunakan Java 6 + Stapler (kerangka web yang agak tidak dikenal yang dikembangkan oleh Kohsuke Kawaguchi dari Hudson / Jenkins fame).
Java benar-benar digunakan untuk pengembangan web modern. Tentu saja itu tidak memiliki daya tarik "seksi" dari Ruby atau bahasa dinamis lainnya, tapi saya jauh dari yakin bahwa bahasa dinamis adalah hal yang baik setelah proyek mulai berkembang.
Server aplikasi Java modern sangat kompetitif dengan ASP.NET dalam hal kinerja, dan keduanya pesanan lebih cepat daripada VM bahasa dinamis yang saya tahu.
Jangan salah paham ... Saya tidak mengatakan bahwa Java selalu merupakan pilihan terbaik (bukan jarak jauh!) - tetapi tidak juga selalu merupakan pilihan yang salah atau "ketinggalan jaman".
sumber
Seorang pengembang baru yang masuk ke pengembangan profesional akan menemukan Java Orde of Magnitude lebih sulit daripada rel, python, atau php untuk melanjutkan sehingga mereka pergi dengan apa yang mudah dipelajari.
Setelah mengatakan semua hal di atas, saya membuat keputusan untuk menggunakan Java untuk Startup saya karena lingkungan Pembangunan Jawa dikonfigurasi dengan benar sangat produktif untuk bekerja di. Dengan dikonfigurasi dengan benar Maksudku.
sumber
strpos
atauin_array
? Dan antarmuka XML DOM PHP konyol (memberikan atribut ke string untuk mengambilnya?). OSGi benar-benar brilian dan tidak tergantung bahasa.Sekitar 5 tahun yang lalu, saya dan seorang kolega diberi tugas pemrograman untuk beberapa proyek internal. Tugas yang cukup sederhana yang membutuhkan penguraian perintah.
Saya datang dengan seluruh hal dalam sekitar 80 baris kode java dan rekan saya mengambil satu minggu, sekitar 20 kelas java dan banyak lagi baris kode java untuk melakukan hal yang sama. Tak perlu dikatakan, kodenya diambil.
Ini membuat saya bertanya-tanya. Di mana-mana, kompleksitas dihargai. (Saya bekerja di salah satu perusahaan produk perangkat lunak terbesar.) Java adalah alat pilihan dan pola desain adalah cara untuk kode.
Sekarang, apakah itu pola pikir atau hanya kesombongan yang menolak kesederhanaan. Yah, saya selalu berpikir akal sehat harus menang. Apakah itu perusahaan atau aplikasi web sederhana, kasus penggunaan dasar adalah sama. Itu harus benar dan dapat diverifikasi.
Saya tidak menggunakan java lagi karena beberapa alasan. Tetapi salah satu faktor - kompleksitas, adalah pola pikir yang berlaku dalam satu ton pengembang java ketika datang untuk mengembangkan perangkat lunak.
Adapun penskalaan bahasa dinamis, JVM adalah hasil dari penelitian selama beberapa dekade. Ada banyak hal yang sama terjadi pada Ruby dll.
Scala adalah salah satu bahasa yang menurut saya sangat pintar dan praktis. Bermain! dengan Scala sama bagusnya untuk pengembangan aplikasi web / perusahaan sama seperti di luar sana.
Adapun Ruby dan Rails menjadi hal baru yang mengkilap untuk pemula, sangat sulit untuk menyewa pengembang Rails yang solid. Ini sebenarnya merupakan penghalang bagi setiap start-up sedangkan kebanyakan java devs harus lebih masuk akal secara bisnis.
sumber
Dalam wawancara baru-baru ini dengan, Joseph Snarr, petunjuk teknis untuk google plus menjelaskan bagaimana aplikasi menggunakan Java Servlets untuk back end dan JavaScript di ujung depan.
Jadi untuk menjawab pertanyaan Anda, Java masih digunakan untuk pengembangan web yang sangat modern. Hanya saja tidak untuk start-up yang telah mendapatkan banyak pers baru-baru ini.
Saya pikir alasan mengapa banyak pemula menggunakan teknologi lain adalah karena mereka lebih seksi dan memiliki dorongan open source yang lebih dipublikasikan di belakang mereka.
sumber
Karena Anda menyebutkan pengembangan web dan Java, banyak orang cenderung lupa bahwa pada awalnya menggunakan Java Applets di browser web tidak tampil dengan baik, tidak hanya itu, tetapi "kotak pasir" untuk applet tidak sepenuhnya dikembangkan dan ada masalah keamanan dengan Java Applets dapat berjalan di browser dan mengakses data mesin lokal (alias masalah keamanan sisi klien). Tentu Java solid di aplikasi backend dan stand-alone tapi saya pikir menghubungkan Java bahasa dengan applet Java (dijalankan di browser) bersama-sama agak mengacaukan beberapa persepsi tentang Java sebagai komponen pengembangan web. Saya tidak berpikir mereka pernah pulih dari itu.
sumber
Pertanyaannya seharusnya "Mengapa Java tidak digunakan oleh startup atau untuk proyek-proyek kecil?". Java tentu digunakan untuk "aplikasi Web modern". Di Google, Java digunakan di backend untuk banyak layanan, dan penutupan yang dikompilasi JS atau GWT digunakan untuk frontend. Masalahnya adalah salah satu dari kecepatan vs skala. Startup harus mendapatkan produk minimum yang layak. Mereka biasanya tim kecil yang terdiri dari 1-3 insinyur, dan menilai kecepatan iterasi dibandingkan kinerja atau pemeliharaan. Berlari melawan masalah skalabilitas atau masalah pemeliharaan kode kode tim adalah masalah "Anda ingin memiliki", yaitu, pada saat Anda mencapai tahap itu, itu pertanda implementasi awal Anda membantu Anda melebihi punuk awal mendapatkan pelanggan atau investasi. Anda dapat menulis ulang aplikasi pada saat itu.
Perusahaan seperti Google dapat membayar kemewahan membangun hal-hal untuk skala di muka, meskipun mereka mungkin membuang-buang waktu mereka menerapkan penskalaan untuk sesuatu yang mungkin tidak mendapatkan pengguna, karena mereka dapat menyerap kerugian.
Setidaknya, itulah pendapat saya, bahwa banyak perusahaan "keren", "keren", "modern" membangun aplikasi kecil dengan tim kecil di mana kecepatan dan kesederhanaan iterasi adalah persyaratan terbesar.
sumber
Aplikasi web tradisional di Jawa, meskipun terstruktur dengan baik, sangat jauh dari "berkembang pesat". Meskipun saya hanya pernah menulis satu aplikasi web lengkap (Java / Tomcat / Struts), itu sangat pemilih, butuh waktu lebih lama dari yang diharapkan untuk debug, dan umumnya menyakitkan ketika menerapkan lapisan logika bisnis. Dalam pertahanan potensial Jawa, itu adalah satu-satunya aplikasi web yang saya tulis di Jawa (meskipun saya sudah terbiasa dengan pemrograman aplikasi tingkat sistem di Jawa), dan saya percaya saya bisa menulis aplikasi web lain sedikit lebih cepat untuk yang kedua kalinya.
Karena itu, saya juga menulis aplikasi dalam PHP dan C #, dan mereka hanya bekerja lebih baik, dan jauh lebih pemaaf daripada Java. Lebih dari itu, Ruby on Rails ditulis khusus untuk pengembangan aplikasi yang cepat, yang, seperti kata Robbie, memungkinkan akses CRUD yang mudah ke database. Masalahnya adalah bahwa sebagian besar situs web yang Anda kembangkan sendiri tidak memerlukan tingkat penyesuaian yang ditawarkan Java (dan mengharuskan Anda untuk melakukan). Selain itu, setiap objek koneksi DB harus ditulis dengan tangan dan tidak mudah untuk di-template. Mungkin ada kerangka kerja yang lebih baik, terutama yang mengambil keuntungan dari fitur dukungan bahasa dinamis baru Java 7 , tapi saya belum melakukan penelitian.
sumber
Jawaban sederhana: kurva pembelajaran hingga produktivitas dasar.
Kerangka kerja sistem berbasis seperti RoR cenderung menempatkan "sihir" dalam bahasa / sintaksis. Sangat mudah untuk meningkatkan sintaksis RoR dasar Anda dan membangun aplikasi.
Java adalah bahasa pertama, dan alat dan kerangka kerja muncul kemudian. Jadi, Anda harus belajar Java terlebih dahulu, dan kemudian Anda harus belajar Spring, atau Grails, atau IDE super Anda, atau apa pun. Contoh favorit Ruby, tidak memerlukan setter dan getter. Faktanya adalah, Java IDEs menyingkirkan manual coding juga ... tetapi masih dalam sumber Anda. Manfaat dari pendekatan ini, adalah bahwa di bawah kerangka kerja, ada bahasa yang konsisten yang dapat digunakan oleh semua pengembang Java.
Manfaat ini meragukan bagi startup kecil di mana waktu adalah hal terpenting. Biasanya, mereka melakukan sangat sedikit yang tidak bisa mereka lakukan dengan kerangka out of the box. Sehingga mereka dapat mengambil sistem pilihan RAD mereka dan memiliki aplikasi langsung keesokan harinya.
Tetapi jika Anda melihat Facebook dan Twitter, saat mereka berkembang, mereka menemukan hal-hal yang tidak dapat ditangani oleh kerangka kerja di luar kotak sehingga mereka harus menggunakan teknologi tingkat yang lebih rendah.
Perang suci yang dimiliki oleh pengembang kerangka ini bahwa mereka dapat melakukan apa pun lebih cepat adalah palsu, mereka dapat melakukan banyak hal yang mereka butuhkan lebih sederhana dan dengan sedikit kurva pembelajaran. Dan untuk banyak hal, itu "cukup baik." Gunakan apa yang benar untuk masalahnya.
sumber
Tergantung bagaimana Anda mendefinisikan "pengembangan aplikasi web modern". Jika Anda berbicara tentang startup, situs web perputaran cepat, Anda perlu mempertimbangkan bahasa dan kerangka kerja yang dirancang untuk tujuan itu. Jika Anda mencari pengembangan web tingkat perusahaan yang stabil, dapat diskalakan, Anda mencari bahasa dan kerangka kerja yang mendukung cita-cita tersebut. Dalam buku saya, itu adalah dua tujuan yang sangat berbeda. RoR, Groovy, dll. Bagus untuk yang pertama dan Java lebih sesuai, secara umum, untuk yang terakhir.
sumber
Google App Engine mendukung Java, sehingga Anda dapat menulis seluruh aplikasi web di Java, menggunakan Eclipse sebagai antarmuka IDE dan penyebaran, dengan Google API yang didokumentasikan dengan cukup - jadi saya tidak akan mengatakan itu tidak digunakan atau tidak dapat digunakan.
sumber
Dalam startup saya bekerja untuk kami memilih untuk menggunakan Java dan JRuby untuk mengimplementasikan API kami karena mereka saling melengkapi.
Untuk infrastruktur, distribusi proses, dan komunikasi, kami memanfaatkan ketahanan Java, sedangkan untuk implementasi aktual titik akhir API, kami memilih JRuby karena semua panggilan melibatkan JSON dan jauh lebih masuk akal untuk memanipulasi representasi longgar-diketik (JSON) menggunakan longgar. -typed language (Ruby).
Jika kita melihat salah satu kelas JRuby kita menjadi hambatan, kita hanya mengimplementasikannya kembali secara langsung di Jawa (pada dasarnya terjemahan baris demi baris). Ini bisa terjadi cukup sering dengan kelas-kelas yang harus melakukan banyak perhitungan, dan dalam konteks ini JRuby berperilaku seperti bahasa prototipe.
Kami menerapkan pemuat kelas dinamis kami sendiri yang artinya kami dapat mengubah kelas Java dengan cepat tanpa memulai ulang server, dan kami sangat senang dengan pilihannya. Jadi argumen "Anda perlu mengkompilasi dan memulai kembali setiap waktu" tidak terlalu berpengaruh.
Kuncinya adalah untuk menghindari semua hal-hal Java EE - itu besar dan rumit dan anti-gesit.
sumber
Saya masih merasa bahwa Java sedang digunakan dalam banyak pengembangan web. Tapi itu biasanya pada jenis pengembangan perusahaan yang lebih berorientasi bisnis-tidak-terutama-teknologi-besar, yang biasanya kurang terbuka daripada startup baru yang harus mendapatkan daya tarik dan mempromosikan pekerjaan mereka sendiri, serta lebih tertarik pada teknologi . Jadi, bahkan jika itu digunakan di banyak situs web perusahaan, Anda mungkin tidak akan pernah tahu, karena mereka tidak akan peduli untuk memberitahu secara publik tentang tumpukan teknologi mereka.
Yang mengatakan, mengomentari semua pertanyaan asli ...
Apakah itu kelemahan bahasa? Dibandingkan dengan bahasa lain seperti Python atau Ruby, Java adalah verbose dan cenderung membutuhkan lebih banyak kode untuk melakukan hal serupa. Tapi itu bukan hanya kemampuan bahasa, juga komunitas di sekitarnya dan jenis pengembang yang menggunakan alat-alat itu. Jadi, sebagian besar modul dan alat di Python, Ruby, PHP, dll adalah open source dan lebih mudah ditemukan daripada di dunia Java, hanya karena ini lebih fokus pada pemberian (dan pengisian) layanan. Misalnya, komunitas Ruby benar-benar berorientasi pada pengembangan web, sehingga setiap pengembang yang dapat menggunakan Ruby akan tahu tentang masalah dan alat yang tersedia untuk proyek web. Itu belum tentu benar untuk pengembang Java, yang bisa saja bekerja pada sistem jenis lain, seperti sistem pelaporan. Tentu saja, pengembang yang baik akan mengejar,
Apakah ini stereotip Jawa yang tidak adil karena sudah ada sejak lama (sudah dikaitkan secara tidak adil dengan teknologi yang lebih lama, dan tidak menerima pengakuan atas kemampuan "modern" -nya)? Jawa sebenarnya tidak setua itu, dan, karena adil, ia sudah sangat membaik. Itu adalah platform yang keren dan relevan sekitar 10 tahun yang lalu. Tapi sejak itu, ada platform baru dengan masalah yang lebih baru dalam pikiran, seperti Ruby on Rails. Sektor inti Jawa terutama adalah dunia perusahaan, dengan masalah yang berbeda, sehingga orang-orang mencari proyek baru di luar yang telah mencari alat yang berbeda. Juga, keuntungan utama dari desain Java, menjadi multiplatform, tidak relevan hari ini seperti sebelumnya.
Apakah stereotip negatif pengembang Java terlalu kuat? (Java tidak lagi "keren") Itu juga benar. Java masih merupakan bahasa untuk belajar "untuk mendapatkan pekerjaan". Jadi, jika Anda tidak peduli, tetapi hanya ingin belajar sesuatu untuk mendapatkan uang, Anda akan berakhir belajar sedikit Jawa dan tidak peduli lagi untuk meningkatkan. Sekali lagi, banyak tentang persepsi dan visibilitas. Ada banyak pengembang Java hebat yang melakukan pengkodean tanpa membagikan pengetahuan mereka, sementara ada banyak pengembang PHP, mungkin tidak sebaik itu, yang menulis blog dan berkolaborasi menjadi open source. Itu mengarah untuk berpikir bahwa pengembang PHP lebih baik daripada Java, karena Anda memiliki umpan balik tertentu tentang mereka.
Apakah aplikasi yang ditulis dalam bahasa lain benar-benar lebih cepat dibangun, lebih mudah dirawat, dan apakah kinerjanya lebih baik? Saya akan mengatakan bahwa mereka lebih cepat dibangun. Prinsip-prinsip bahasa seperti PHP, Python atau Ruby membuatnya cukup baik untuk menghasilkan perangkat lunak yang dapat berubah terus-menerus. Misalnya, pengetikan dinamis membuat lebih mudah untuk mengubah antarmuka. Di Jawa memiliki antarmuka yang terdefinisi dengan baik adalah penting, yang mengarah ke antarmuka yang lebih stabil (dan sulit untuk diubah). Ini sangat penting dalam startup baru, yang masalah utamanya adalah mendapatkan produk sebelum Anda kehabisan uang. Tentang kinerja, sangat mudah untuk salah memahami kebutuhan dan mencoba menggunakan trik sulap untuk mencapai kinerja yang diperlukan, seperti "Java lebih cepat daripada Ruby. Periode" atau "MongoDB adalah skala web".
Apakah Java hanya digunakan oleh perusahaan besar yang terlalu lambat untuk beradaptasi dengan bahasa baru? Secara pasti, setelah memiliki tim pengembang Java yang sudah ada di perusahaan, membuatnya lebih mudah untuk tetap menggunakan bahasa yang sama untuk proyek-proyek baru. Ini dianggap sebagai "taruhan aman", khususnya jika inti perusahaan bukan teknologi. Tapi, bagaimanapun, Java tidak HANYA digunakan pada perusahaan besar, masih ada banyak startup yang menggunakan Java untuk hal-hal keren (Misalnya, FightMyMonster atau Swrve menggunakan Java secara luas), tetapi saya akan mengatakan bahwa kecenderungan umum dalam startup scene adalah menggunakan bahasa lain. Itu juga cara mendapatkan orang, karena kebanyakan orang akan lebih senang bekerja dengan Ruby, Python atau PHP, dianggap lebih "ramah" dan "menyenangkan"
sumber
Ini benar, tetapi bukan karena Jawa dan ekosistemnya. Itu karena orang-orang itu, ketika menggunakan Jawa cenderung membuat kekacauan besar dan kekejian berat.
Ada cukup banyak kerangka kerja (pegas-mvc, grails, play, dll.) Yang memungkinkan Anda membangun sesuatu dengan cepat. Fakta bahwa orang overengineer sistem mereka adalah masalah yang datang dengan meningkatnya pengetahuan yang didapat orang ketika mereka bekerja dengan ekosistem Jawa - Anda tahu banyak hal lagi, dan Anda memilikinya tersedia (ada alat untuk semuanya), dan "semuanya tampak seperti kuku".
Jika Anda "hacky", Anda dapat melakukan hal yang hampir sama dengan Java seperti halnya dengan bahasa lain, dan inilah penelitian yang menunjukkan bahwa:
Studi 49 programmer: sistem tipe statis tidak berpengaruh pada waktu pengembangan ... http://www.cs.washington.edu/education/courses/cse590n/10au/hanenberg-oopsla2010.pdf
sumber
Untuk menambahkan sedikit pada apa yang telah dikatakan, saya pikir banyak yang harus dilakukan dengan seberapa cepat Anda dapat beralih dari yang tidak ada (secara harfiah) ke aplikasi web yang fungsional.
Jika semua yang Anda miliki hari ini adalah sebuah ide, pergi dari tempat Anda sekarang ke menulis aplikasi web Anda hampir semudah jatuh, baik Anda memilih penyedia hosting atau infrastruktur Anda sendiri (seperti gambar EC2). Memilih Java, menurut pengalaman saya, biasanya lebih banyak pekerjaan, dan seringkali lebih mahal juga.
Selain itu, jika Anda menggunakan Linux dan PHP / Python / Ruby, alat dan platform ini gratis dan dirancang untuk saling mendukung. Dengan Java, kadang-kadang tampaknya dua dunia (OS dan Java) kadang-kadang tampaknya tidak bekerja secara harmonis satu sama lain.
sumber
Siapa bilang bukan?
Spring MVC + Spring Data JPA atau Mongo + Thymeleaf untuk templating + coffee-maven-plugin untuk Coffee to JS transpiling dan Anda siap melakukannya.
sumber
Banyak yang mungkin mengaitkan Java dan pengembangan aplikasi web dengan kengerian J2EE yang, dibundel dengan server aplikasi J2EE mengerikan dari perusahaan besar biru dan merah, menyamai minggu kerja sebelum dasar "Hello World" online.
Benar, spesifikasi dan implementasi JEE baru-baru ini lebih ringan, tapi saya masih berpikir tiga kali sebelum menyarankan hal seperti ini untuk proyek pengembangan cepat siklus pendek.
Ini masih merupakan cara berbasis standar untuk melakukan pengembangan aplikasi web di Jawa. Alternatif-alternatif itu, banyak di antaranya disebutkan dalam jawaban lain, menyampaikan gambaran yang lebih beragam dan membingungkan dengan terlalu banyak pilihan untuk dibuat.
Bahasa lain menggambarkan solusi turnkey tunggal alih-alih banyak ini. Ini membuat pilihan ini tampak lebih sesuai untuk keperluan ketika Anda memiliki ikan yang lebih penting untuk digoreng.
sumber
Saya pikir itu digunakan lebih banyak daripada yang Anda pikirkan - penggunaannya hanya di bawah garis air. Ada banyak, banyak ruby di pembungkus rel di sekitar, layanan java mewah. Terutama ketika Anda mulai berurusan dengan apa pun yang mendekati data besar. . .
sumber