pengembangan-web-mp.com

Mengapa Java digunakan untuk pengembangan aplikasi web modern?

Sebagai seorang programmer Java profesional, saya telah mencoba untuk memahami - mengapa kebencian terhadap Java untuk aplikasi web modern?

Saya telah memperhatikan tren yang keluar 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 respons seperti, "Saya benci Java dengan penuh gairah." Tapi sepertinya tidak ada yang benar-benar bisa memberikan jawaban yang pasti.

Saya juga mendengar komunitas startup web yang sama ini merujuk negatif ke pengembang Java - kurang lebih menyiratkan bahwa mereka lambat, tidak kreatif, tua.

Akibatnya, saya menghabiskan waktu bekerja untuk mengambil Ruby/Rails, pada dasarnya untuk mengetahui 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 ini kelemahan bahasa?

  • Apakah ini stereotip yang tidak adil dari Java 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 dari Java pengembang 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?

393
Cliff

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.

174
Chiron

Dalam pengalaman saya, Java untuk aplikasi web berlebihan untuk aplikasi kecil. Sebuah blog sederhana dengan satu tabel database menampung entri blog, misalnya, dapat dilakukan dalam sesuatu yang jauh lebih sederhana.

Saya biasanya melihat Java jauh lebih baik dalam aplikasi web yang lebih besar (think bank dan perusahaan asuransi) yang berkomunikasi dengan sejumlah sistem lain (seperti backframe mainframe dan basis data dan peer web- layanan sistem pemrosesan batch latar belakang ... semua dalam aplikasi yang sama).

Dari apa yang saya lihat, arsitektur aplikasi web JavaEE biasanya lebih dari yang dibutuhkan untuk aplikasi web kecil/sederhana.

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 ​​saja, saya jauh lebih bahagia ketika saya mengembangkan python. Berikut adalah beberapa alasan mengapa saya pikir python lebih baik daripada Java berdasarkan pengalaman pribadi saya, jarak 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 menyebalkan dari Java adalah kenyataan bahwa sebagian besar perpustakaan yang Anda gunakan tidak termasuk dalam Java itu sendiri, Anda harus menyertakan satu ton lib pihak ketiga 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 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 dalam 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 membutuhkan lebih banyak memori dibandingkan dengan bahasa lain, sehingga tidak masuk akal bagi penyedia hosting bersama untuk menghabiskan waktu berharga mereka RAM 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 Jawa, saya mendapati diri saya jauh lebih lambat dari apa yang bisa saya lakukan dengan python. Saya perlu melakukan perubahan, kompilasi, penempatan kembali dan kemudian tes, 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 yang sulit digunakan dan dikembangkan.

IDE:

Ketika saya 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 bisa 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 satu ton RAM. Pembuat IntelliJ keluar dengan editor python bernama pycharm, saya membelinya ketika pertama kali keluar, dan itu hebat. Tapi 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 banyak karena jika saya mengacaukan sesuatu, butuh 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 hal itu, sampai saya melakukan aplikasi dengan Django ORM pada proyek python, dan itu membuka mata saya, begitulah seharusnya ORM bekerja. Setelah proyek itu saya kembali ke hibernate, dan saya merasa kecewa, dan ingin kembali ke ORM Django. ORM python hebat lainnya adalah sqlalchemy, yang mirip dengan ORANG 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 Java tidak begitu bagus, dan saya pikir saya sudah 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 Django templat dan Jinja2, mereka memiliki semua yang saya butuhkan dalam mesin templating, dan sangat mudah digunakan.

135
Ken Cochrane

Start Up ingin yang mengkilap. Apa pun yang mengkilap adalah: RoR, Groovy, Grails, OOP w/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 a Java Perpustakaan Tag) dan Java.

Pertunjukan sebelumnya:

  1. Layanan Pengujian Pendidikan - ColdFusion
  2. Asuransi Risiko Tinggi - ColdFusion dan Java
  3. 401k - ColdFusion dan Java
  4. Perjalanan - Java w/aplikasi ColdFusion internal
  5. Securities - ColdFusion (versi pra-Jawa)

Ini semua adalah situs dengan volume tinggi dan keamanan tinggi. Tidak seorang pun di perusahaan-perusahaan ini 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 Java dan memperoleh stabilitas.

Satu-satunya orang yang memandang rendah pada Java adalah mereka yang tidak memiliki atau sedikit pengalaman aktual dengan itu atau telah terlibat dengan implementasi yang buruk dan sekarang malu-malu. Mereka melihat mengkilap dan angka jika semua anak-anak keren menggunakannya, mengapa tidak saya?

94
Adrian J. Moreno

Tambahan untuk jawaban FrustratedWithFormsDesigner's : Karena saya kira pertanyaan Anda lebih banyak target terhadap 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 Java atau ASP situs Namun ini bukan cacat dari bahasa-bahasa tersebut.

73
sebastiangeiger

Java absolute is digunakan untuk pengembangan aplikasi web modern. Terutama sekali Anda sampai ke ujung yang lebih besar/lebih kompleks/scalable dari spektrum aplikasi web.

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 di 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 ( Angkat dan Mainkan ), JRuby ( JRuby on Rails ) dan Clojure ( Noir , Cincin/Perkecil + banyak kerangka kerja kustom) untuk beberapa nama.

Dengan semua inovasi yang terjadi pada ruang bahasa JVM baru, saya pribadi curiga bahwa Java pada akhirnya akan menjadi "assembler pemrograman sisi server").

70
mikera

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, Java melewati suatu periode kalau itu standar pengembangan web mencoba menjadi segalanya untuk semua orang (bisa dibilang masih melakukan). "Jangan ulangi diri sendiri" adalah tanggapan terhadap neraka xml dan panjang membangun siklus Java pengembangan web. Sebagai hasilnya, Java (EJB, Struts, JSF, dll.) menjadi hal yang dipandang sebagai semua paradigma baru berusaha mengatasi.

Java, bahasanya adalah verbose. Itu pro dan kontra (bagus untuk pemeliharaan, payah 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 ditambahkan ke bahasa dewasa tanpa menjadi sarang tikus yang menjadi C # menjadi.

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 berjalan selama bertahun-tahun, harus menskala tanpa masalah, harus sangat cepat, dan harus sepenuhnya bebas dari 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. Ketelitian dan disiplin yang dirancang dengan baik oleh proyek Java proyek (antarmuka, pola, dan air suci untuk vampir php :)) memberlakukan 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 Java masih lebih disukai. Contohnya termasuk besar/kompleks aplikasi web seperti yang ada di broker keuangan (ameritrade), pertukaran finansial (nasdaq, nyse, mungkin london setelah kegagalan .net), perbankan online (hampir semuanya), email (google), lelang (ebay), dll.

Dari perspektif kinerja dan skala, tidak ada yang melebihi 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 dari itu Ruby infrastruktur di Scala pada Java VM dalam urutan 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 Java plugin browser telah mengalami bagian yang adil dari kerentanan keamanan, platform Java sendiri adalah salah satu platform yang lebih aman dibuat. Java aplikasi web memiliki reputasi sangat aman. Ini praktik pengkodean, perpustakaan, dan arsitektur telah lama mencegah kesalahan yang membuat serangan seperti injeksi sql atau buffer overflow mungkin terjadi. Sementara platform web lainnya (Rails) memiliki reputasi keamanan yang baik, tidak ada yang melampaui Java.

Intinya, sebagian besar aplikasi web sederhana secara teknis. Untuk sederhananya, Java sering kali berlebihan) (seperti dulu 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 dunia) .

BTW - Saya menemukan kenaikan PHP menjadi benar-benar membingungkan. PHP sebagai bahasa adalah setara kasar dengan Perl dalam keterbacaan dan VB dalam kualitas hasil. Ini mendorong praktik mengerikan, hampir tidak mungkin untuk mempertahankan, perpustakaan pihak ke-3 jarang berfungsi seperti yang diharapkan, dan memiliki sintaks yang akan mendorong Larry Wall ... well ... a 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 sepotong kecil pada suatu waktu. Ada banyak yang bisa dikatakan untuk itu dari perspektif adopsi. Namun, bagi siapa pun yang setiap orang harus mendukung atau mengganti salah satu dari milyaran aplikasi VB yang ditulis oleh "programmer" di dunia perusahaan/mfg, Anda mungkin menggelengkan kepala dan merencanakan pensiun Anda.

41
user56365

Yah, saya baru-baru ini bertemu dengan seorang pria Java yang sangat senang dengan proyek Spring Data baru, karena betapa sedikit kode yang diperlukan untuk mendapatkan akses CRUD dasar ke DB Anda.

Saya dapat membuat CRUD app menggunakan Rails (bukan hanya akses db, tapi juga view dan controller) dengan beberapa perintah.

(Dari atas kepala saya: proyek baru, 1 perintah perancah 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 menebus kurangnya 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 dapat grok kode untuk mengatakan, Padrino atau Rails (Ruby web frameworks) jauh lebih mudah daripada saya bisa grok kode untuk mengatakan Spring Roo. Ini bisa jadi karena fakta yang saya tahu Ruby jauh lebih baik daripada yang saya tahu Java, meskipun.

38
Robbie

Java 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 kode untuk masuk. Itu 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 Jawa.

Jadi saya kira ini adalah alasan mengapa webstartup menghindari Java.

24
Daniel Iankov

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 standar Servelt cukup rumit untuk sebagian besar aplikasi. Ini bukan masalahnya dengan Ruby, Django dan lainnya. Mereka lebih merupakan kerangka kerja tunggal daripada bahasa.

Keluhan terbesar yang saya dengar dari pengembang

  1. Sintaksnya terlalu panjang. Hanya untuk mencetak sesuatu kita harus menulis System.out.print. Anda benar-benar tidak dapat menggunakan editor seperti VI dan menulis sepotong kode dalam beberapa jam.
  2. Kerangka uji lemah. Meskipun kerangka kerja pengujian sangat mirip di Java dan Ruby, Ruby mengambil langkah maju dengan menyediakan sesuatu yang mudah tersedia untuk pengujian. Ini terutama berlaku jika Anda menggunakan DB secara luas dalam aplikasi Anda. Bahkan banyak kerangka kerja Web tidak berpikir tentang pengujian.
  3. Template itu menyusahkan. Membuat bahasa yang relatif sederhana menjadi Soup Mie.
  4. Tidak keren. Sebagian besar Java aplikasi ditulis di perusahaan besar, yang terkait dengan Birokrasi yang tidak berjalan dengan baik dengan pengembang. Orang tidak berpikir Google ketika mereka berpikir Java. Google == Python. Ia memiliki juga melakukan banyak hal tanpa buku yang keluar menunjukkan lakukan X dalam Y hari.
  5. Tidak suka mengkompilasi. Bagi kebanyakan pengembang kompilasi adalah fenomena lama satu dekade. Masuk akal di tahun 80-an dengan C tetapi komputer mordern dapat melakukan lebih banyak. Mereka tidak menulis kode dalam bahasa yang dikompilasi. Java adalah salah satu dari sedikit bahasa yang dikompilasi dan digunakan untuk menulis aplikasi web.
  6. Terlalu banyak Oops Konsep. Meskipun pengembang diam-diam mengadopsi Oops domain. Mereka tidak suka secara penuh. Mereka tidak suka ketika Anda menulis aplikasi dengan 10 kelas dengan masing-masing kelas hanya melakukan satu hal. Membuat Anda membuka 100-an file dan membayangkan interaksi di 100-an kelas, kadang-kadang dengan kerangka kerja. Menjadikan seluruh kegiatan pemrograman tugas. Ini bisa benar dengan kebanyakan bahasa tetapi saya telah melihat bahwa Java Pengembang membayar banyak perhatian pada apa yang dilakukan kelas. Ini adalah Java Pengembang yang sering membuat kode dengan kelas 100-an. Ini bagus dari banyak perspektif tetapi non Java pengembang membencinya.

Jadi semuanya Java memberlakukan kurva curam di awal proyek, yang berarti terlalu banyak uang untuk dilakukan. Tambahkan ke ini sebuah komunitas besar yang melekat pada Jawa, masing-masing berpikir dengan cara yang berbeda dan tidak ada orang yang benar-benar menusuk kepala seluruh komunitas. Mereka juga tidak melihat pembicaraan dan konferensi yang dilakukan oleh komunitas memamerkan semua hal baru yang keren. Tidak ada buku keren baru. Java sepertinya akan turun karena itu digunakan untuk memecahkan terlalu banyak masalah yang berbeda beberapa tahun yang lalu.

18
arunmur

Kerangka kerja untuk melakukan Java pengembangan web memiliki cukup banyak kurva pembelajaran, mereka sering berlebihan untuk apa yang Anda butuhkan, dan banyak tipuan yang diperlukan untuk membuat sesuatu berfungsi hanya ... menyakitkan ...bekerja dengan.

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 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 Ruby pemrograman web dan memberikan kesaksian bahwa hal-hal yang sulit dilakukan di Java pemrograman web memerlukan kode dan kompleksitas yang jauh lebih sedikit untuk dicapai di Ruby. Tentunya ada kurva pembelajaran untuk berbagai sintaks dan aturan bahasa, tetapi untuk membuat prototipe aplikasi, ia memiliki 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.

14
Jessica Brown

Turun ke biaya dan tren. Startup Web 2.0 dibuat oleh Visionary 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 dengan Java rumit dan/atau mahal. Saya tahu lanskap berubah di sana tetapi apakah terlalu sedikit 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 mengatakan 7 tahun) pengalaman yang masih menunjukkan pengetahuan programmer enam 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 --- potensial untuk seorang kandidat.

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.

14
Michael Brown

Java terlalu rumit. Saya melakukan banyak pekerjaan PHP dan itu 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 PHPsaya tahu saya lihat Java karena gorila raksasa ini beratnya £ 800, hampir seperti mengeluarkan truk semi beroda 18 untuk pergi ke toko kelontong dan mendapatkan sepotong roti.

Saya sudah mencoba belajar Jawa, kesan pertama saya di mana itu sangat panjang lebar dan terowongan karpal. Selain itu memulai dengan itu meninggalkan saya dengan banyak pertanyaan yang mungkin tampak mudah untuk seorang veteran Java. OpenJDK, atau Sun? Tomcat, atau Glassfish, atau? Ditambah lagi tampaknya setiap intro ke Java buku membuat Anda menulis kode untuk baris perintah. Saya pikir sebagian besar orang akhir-akhir ini mendapati bahwa tunda tidur.

14
Cyrus

Tim saya dan saya saat ini mengembangkan aplikasi web greenfield di Java 6 + Stripes. Dalam setahun terakhir saya juga mengerjakan 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 begitu proyek mulai berkembang.

Modern Java server aplikasi sangat kompetitif dengan ASP.NET dalam hal kinerja, dan keduanya adalah urutan besarnya lebih cepat daripada bahasa dinamis VM Saya tahu.

Jangan salah paham ... Saya tidak mengatakan Java adalah selal pilihan terbaik (tidak jauh!) - tetapi tidak juga selal pilihan yang salah atau "ketinggalan zaman".

12
Daniel Pryden
  1. Java lebih kompleks untuk dipelajari daripada PHP/Python/Ruby
  2. Ekosistem Jawa sangat kompleks, sangat besar dan cukup membingungkan bagi pemula
  3. Ada banyak kerangka kerja yang secara historis buruk dengan reputasi negatif yang terkait dengan Jawa, Anda harus tahu kerangka kerja mana yang harus dihindari.
  4. Java build tools adalah cara untuk kompleks (pakar & semut)
  5. Java tidak memiliki sistem modul yang mudah digunakan (OSGI terlalu rumit)
  6. Java IDE seperti Eclipse sementara sangat kuat dengan fitur luar biasa sulit dikonfigurasikan untuk pengembangan web yang efektif tanpa banyak pengalaman.
  7. Jika Anda menggunakan selain Tomcat atau Jetty sebagai server maka Anda akan frustrasi dengan waktu startup yang lama dari WebSphere/WebLogic/JBOSS
  8. Java EE memecahkan masalah yang tidak dimiliki banyak orang seperti transaksi terdistribusi

Seorang pengembang baru yang masuk ke pengembangan profesional akan menemukan Java Urutan Magnitude lebih sulit daripada Rails, 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 dikonfigurasi dengan benar Java Lingkungan pengembangan sangat produktif untuk bekerja. Dengan dikonfigurasi dengan benar maksud saya.

  1. Waktu mulai kurang dari 10 detik
  2. Ruang kerja Eclipse yang dikonfigurasi dengan benar, dengan semua kerangka kerja yang kusut dan terkonfigurasi
  3. Pilihan perpustakaan yang baik (Spring, Spring MVC, Spring Social, Spring Security, JPA, Hibernate, Velocity, .... dll)
  4. Mesin pengembang cepat dengan SSD
  5. Berlangganan Orielly Safari
12
ams

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 menghabiskan waktu seminggu, sekitar 20 kelas Java dan lebih banyak baris kode Java untuk melakukan hal yang sama. Tak perlu dikatakan, kodenya diambil.

Ini membuat saya bertanya-tanya. Di mana-mana, kompleksitas dihargai. (Saya sedang bekerja di salah satu perusahaan produk perangkat lunak terbesar.) Java adalah alat pilihan dan pola desain adalah cara untuk membuat 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. Tapi salah satu faktor - kompleksitas, adalah pola pikir yang berlaku dalam satu ton pengembang Java ketika datang untuk mengembangkan perangkat lunak.

Sedangkan untuk penskalaan bahasa dinamis, JVM adalah hasil penelitian selama beberapa dekade. Ada banyak hal yang sama terjadi pada Ruby dll.

Scala adalah satu bahasa yang menurut saya sangat pintar dan praktis. Bermain! dengan Scala sama bagusnya untuk pengembangan aplikasi web/perusahaan seperti di luar sana.

Mengenai Ruby dan Rails sebagai hal baru yang mengilap untuk pemula, sangat sulit untuk menyewa pengembang Rails yang solid. Ini sebenarnya merupakan penghalang untuk memulai apa pun sedangkan kebanyakan pengembang Java harus membuat bisnis lebih masuk akal.

12
Ar Wen

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. Tidak hanya untuk start-up yang telah mendapatkan begitu banyak pers baru-baru ini.

Saya pikir alasan mengapa banyak perusahaan baru menggunakan teknologi lain adalah karena mereka lebih seksi dan memiliki dorongan sumber terbuka yang lebih dipublikasikan di belakang mereka.

11
Greg Guida

Pertanyaannya adalah "Mengapa Java digunakan oleh startup atau untuk proyek kecil?". Java tentu digunakan untuk "aplikasi Web modern". Di Google , Java digunakan pada backend untuk banyak layanan, dan penutupan yang dikompilasi JS atau GWT digunakan untuk frontend. Masalahnya adalah kecepatan vs skala. Startup harus mendapatkan produk yang layak minimum). Mereka biasanya tim kecil yang terdiri dari 1-3 insinyur, dan menilai kecepatan iterasi dibandingkan kinerja atau perawatan. Berlari melawan masalah skalabilitas atau masalah pemeliharaan kode kode tim adalah masalah "yang ingin Anda miliki", yaitu, pada saat Anda mencapai tahap itu, itu pertanda implementasi awal Anda membantu Anda melewati punuk awal mendapatkan pelanggan atau investasi. Anda dapat menulis ulang aplikasi pada saat itu.

Sebuah perusahaan seperti Google dapat membayar kemewahan membangun hal-hal untuk skala di depan, 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.

9
cromwellian

Karena Anda menyebutkan pengembangan web dan Java, banyak orang cenderung lupa bahwa pada awalnya menggunakan Java Applet dalam browser web tidak berformat baik, tidak hanya itu, tetapi "kotak pasir" untuk applet tidak sepenuhnya dikembangkan dan ada masalah keamanan dengan Java Applet 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 mengaitkan Java bahasa dengan Java applet (dijalankan di browser) bersama-sama agak kacau beberapa persepsi tentang Java sebagai komponen pengembangan web. Saya tidak berpikir mereka pernah pulih dari itu.

9
LocoTx

Jawaban sederhana: kurva pembelajaran hingga produktivitas dasar.

Kerangka sistem berbasis seperti RoR cenderung menempatkan "sihir" dalam bahasa/sintaksis. Sangat mudah untuk meningkatkan sintaksis RoR dasar Anda dan mendapatkan aplikasi.

Java adalah bahasa yang pertama, dan alat dan kerangka kerja muncul kemudian. Jadi Anda harus belajar Java pertama, dan kemudian Anda harus belajar Spring, atau Grails, atau super IDE Anda, atau apa pun. Contoh favorit Ruby, tidak memerlukan setter dan getter. Faktanya adalah, Java IDE juga menyingkirkan pengkodean manual ... tetapi masih dalam sumber Anda. Manfaat dari pendekatan ini, adalah bahwa di bawah kerangka kerja, ada bahasa yang konsisten bahwa semua Java pengembang dapat bekerja dengannya.

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 RAD sistem pilihan mereka dan memiliki aplikasi live hari berikutnya.

Tetapi jika Anda melihat Facebook dan Twitter, ketika 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.

7
Lucas McGregor

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 telah saya tulis dalam Java (meskipun saya sudah terbiasa dengan pemrograman aplikasi tingkat sistem di Jawa), dan saya percaya saya bisa menulis aplikasi web lain sedikit lebih cepat daripada kedua kalinya.

Karena itu, saya juga telah menulis aplikasi dalam PHP dan C #, dan itu hanya berfungsi lebih baik, dan jauh lebih memaafkan 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 perlu tingkat penyesuaian yang Java tawarkan (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 di sekitar, terutama yang mengambil keuntungan dari fitur dukungan bahasa dinamis baru Java 7 , tapi saya belum melakukan penelitian.

7
Brian

Google App Engine mendukung Java, sehingga Anda dapat menulis seluruh aplikasi web di Java, menggunakan Eclipse sebagai IDE dan antarmuka penyebaran, dengan Google API yang didokumentasikan dengan cukup - jadi saya tidak akan mengatakan itu tidak digunakan atau tidak dapat digunakan.

6
Paul

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 cocok, secara umum, untuk yang terakhir.

6
cdkMoose

Dalam startup saya bekerja untuk kami memilih untuk menggunakan keduanya 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 dalam Java (pada dasarnya terjemahan baris demi baris). Hal ini dapat terjadi cukup sering dengan kelas yang harus melakukan banyak perhitungan, dan dalam konteks ini JRuby berperilaku seperti bahasa prototipe.

Kami menerapkan pemuat kelas dinamis kami sendiri yang berarti kami dapat mengubah kelas Java dengan cepat tanpa memulai ulang server, dan kami sangat senang dengan pilihan itu. Jadi "Anda harus mengkompilasi dan restart setiap kali "argumen tidak tahan banyak.

Kuncinya adalah untuk menghindari semua Java EE stuff - itu besar dan rumit dan anti-gesit).

5
David Semeria

Saya masih merasa bahwa Java sedang digunakan dalam banyak pengembangan web. Tapi itu biasanya pada jenis pengembangan perusahaan yang lebih berorientasi bisnis-bukan-terutama-teknologi-besar, yang biasanya kurang terbuka daripada startup baru yang harus mendapatkan daya tarik dan mempromosikan karya 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 memberi tahu publik tentang tumpukan teknologi mereka.

Yang mengatakan, mengomentari semua pertanyaan asli ...

Apakah ini merupakan kelemahan bahasa? Dibandingkan dengan bahasa lain seperti Python atau Ruby, Java adalah verbose dan cenderung membutuhkan lebih banyak kode untuk melakukan hal yang serupa, tetapi bukan hanya kemampuan bahasa, juga komunitas di sekitarnya dan jenis pengembang yang menggunakan alat-alat itu. Jadi, sebagian besar modul dan alat pada Python, Ruby, PHP, dll adalah open source dan lebih mudah ditemukan daripada di Java dunia, hanya karena ini lebih fokus pada pemberian (dan pengisian) layanan. Misalnya, the = 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 tidak selalu benar untuk Java pengembang, yang bisa saja bekerja pada sistem jenis lain, seperti sistem pelaporan. Tentu saja, pengembang yang baik akan mengejar ketinggalan, tetapi persepsi adalah bahwa rata-rata = Java pengembang kurang khawatir tentang l menghasilkan teknologi baru dan bahasa baru.

Apakah ini merupakan stereotip yang tidak adil dari Java karena sudah ada sejak lama (telah dikaitkan secara tidak adil dengan teknologi yang lebih lama, dan tidak menerima pengakuan untuk itu " "kemampuan" modern? Java tidak terlalu tua, dan, karena adil, sudah sangat meningkat. Itu adalah platform yang keren dan relevan sekitar 10 tahun Tapi sejak itu, ada platform baru dengan masalah yang lebih baru dalam pikiran, seperti Ruby on Rails. Sektor inti dari Java telah menjadi perusahaan utama dunia, dengan masalah yang berbeda, sehingga orang yang mencari proyek baru di luar yang telah mencari alat yang berbeda. Juga, keuntungan utama dari desain Java, menjadi multiplatform, tidak relevan saat ini karena sebelumnya.

Apakah stereotip negatif Java pengembang terlalu kuat? (Java tidak lagi "keren") Itu juga beberapa kebenaran di dalamnya. Java masih merupakan bahasa untuk belajar "mendapatkan pekerjaan". Jadi, jika Anda tidak peduli, tetapi hanya ingin belajar sesuatu untuk mendapatkan uang, Anda akan akhir belajar sedikit Java dan tidak peduli lagi untuk meningkatkan. Sekali lagi, banyak tentang persepsi dan visibilitas. Ada banyak pengembang Java hebat yang pengkodean tanpa berbagi pengetahuan mereka, sementara ada banyak pengembang PHP, mungkin tidak sebagus itu, yang menulis blog dan berkolaborasi menjadi open source. Itu mengarah pada pemikiran bahwa PHP pengembang lebih baik daripada Java yang, 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 dibuat. Prinsip-prinsip bahasa seperti PHP, Python atau Ruby membuatnya cukup baik untuk menghasilkan perangkat lunak yang dapat berubah terus-menerus. Misalnya mengetik dinamis membuat lebih mudah untuk mengubah antarmuka. Dalam Java memiliki antarmuka yang didefinisikan dengan baik adalah penting, yang mengarah ke antarmuka yang lebih stabil (dan sulit untuk diubah). Hal 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". Realitas lebih sulit daripada daripada.

Apakah Java hanya digunakan oleh perusahaan besar yang terlalu lambat untuk beradaptasi dengan bahasa baru? Secara definitif, setelah memiliki tim yang sudah ada Java pengembang di perusahaan, membuat lebih mudah untuk tetap menggunakan bahasa yang sama untuk proyek-proyek baru. Ini dianggap sebagai "taruhan aman", khususnya jika inti perusahaan bukanlah 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 ekstensif), tapi saya akan mengatakan bahwa kecenderungan umum dalam adegan startup adalah menggunakan bahasa lain. juga merupakan cara mendapatkan orang, karena kebanyakan orang akan lebih menyenangkan untuk bekerja dengan Ruby, Python atau PHP, dianggap sebagai bahasa yang lebih "ramah" dan "menyenangkan" daripada bekerja dengan Java.

5
Khelben

Ini benar, tetapi bukan karena Java dan ekosistemnya. Itu karena orang-orang yang, ketika menggunakan Java 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 Java - Anda tahu banyak hal lagi, dan Anda memilikinya tersedia (ada alat) untuk semuanya), dan "semuanya terlihat seperti paku".

Jika Anda "peretasan", Anda dapat melakukan hal yang hampir sama dengan Java seperti 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

5
Bozho

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.

3
Matt Ryan

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.

3
Martin Spa

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 pas untuk keperluan ketika Anda memiliki ikan yang lebih penting untuk digoreng.

3
Asgeir S. Nilsen

Saya pikir itu digunakan lebih banyak daripada yang Anda pikirkan - penggunaannya hanya di bawah garis air. Ada banyak, banyak Ruby pada Rails pembungkus tebal, mewah Java layanan. Terutama ketika Anda mulai berurusan dengan apa pun mendekati data besar.

2
Wyatt Barnett

Java itu keren, Java itu keren dan Java akan keren di masa depan. Saya sedang mengembangkan aplikasi web. Menggunakan Java.

Masalah utama dengan Java adalah perlu tim ukuran sedang 7-10 orang untuk melihat hasil implementasi. Pengembang back-end harus memiliki pengetahuan arsitektur aplikasi dari ORM ke framework Aplikasi untuk lapisan presentasi. Terlalu banyak opsi untuk pengembang di atas meja, dan ini menimbulkan pertanyaan, apakah ide yang baik untuk menggunakan ORM atau tidak? Kerangka kerja ORM mana yang akan digunakan? Kerangka kerja aplikasi mana yang digunakan? Bagaimana menerapkan ujung depan? Semua ini membuat para pengembang berjuang dan membuat kombinasi tak berujung dari pengguna akhir untuk memilih teknologi ini dengan kerangka kerja yang tidak akrab dengan pengembang. Hal yang sama adalah dengan IDE plugins; terlalu banyak pilihan, banyak pilihan, banyak waktu dihabiskan untuk menginstal, mengkonfigurasi, dan menguji apakah versi plugin ini berfungsi dengan versi IDE dan sebagainya. Hal terakhir adalah hosting; banyak dikembangkan Java Aplikasi tidak keluar untuk umum karena tidak ada web hosting yang tepat untuk Java aplikasi web, dapatkan Satu VPS seharga $ 80/bulan bukanlah pilihan bagi terlalu banyak pengembang, dan sebagian besar aplikasi membutuhkan lebih dari satu VPS.

2
newphoenix

Saya menggunakan banyak Java, untuk membuat aplikasi web. Jadi, ketika datang ke * bahasa itsel * f, saya hanya menemukan satu (tapi besar) masalah - kurangnya dukungan multiline. Ini membuat pencetakan/templating dalam murni Java kode sangat tidak terbaca.

Tetapi masalah sebenarnya adalah kurangnya kerangka kerja web yang bagus. Saya telah bekerja dengan banyak solusi, dan tidak satupun dari mereka yang bisa saya sebut baik atau bahkan memuaskan.

Kebanyakan dari mereka sebenarnya adalah pemrograman XML. Di [~ # ~] jsf [~ # ~] Anda menghasilkan banyak XML, dan jika Anda ingin mengubah beberapa fitur umum, seperti label rearange di bagian atas bidang teks, Anda Saya akan berakhir dengan melakukan perubahan yang sama di banyak tempat. Ya, Anda sudah menyertakan, tetapi membandingkannya dengan menyertakan dari PHP ...

Selain itu, JSF baru mencakup "ekstra" fitur yang dikenal dengan JavaScript frameworks tahun sebelumnya ...

[~ # ~] zk [~ # ~] sedikit lebih baik karena memungkinkan membuat elemen web dalam kode Java, yang membuat modifikasi lebih mudah (jika Anda menggunakan OOP dengan benar - warisan dll.). Namun, ini Java kode dieksekusi di sisi server, yang merupakan masalah kinerja hebat - setiap klik akan menyebabkan paket dikirim ke server.

Yah, [~ # ~] gwt [~ # ~] adalah kerangka kerja web terbaik yang pernah saya kerjakan. Ini memungkinkan pemrograman objek dalam desain web. Setiap elemen pada layar diwakili oleh objek Java, yang memberi Anda fleksibilitas penuh tetapi ... Waktu kompilasi sangat panjang, dan Javascript yang dihasilkan jauh dari optimal, hanya karena GWT tidak sepenuhnya memanfaatkan kemungkinan JavaScript (tidak ada dukungan untuk refleksi, setidaknya dalam versi yang saya gunakan, dan implementasi HashMap yang fatal).

Anda dapat menggunakan templat, seperti Velocity, tetapi seperti di atas, mereka adalah versi orang miskin tentang kemungkinan templating yang diberikan oleh bahasa seperti PHP.

Jadi, ini bukan kebencian terhadap Java, tetapi kurangnya dukungan untuk menulis aplikasi web yang akan didapat ketika menggunakan PHP, Python dll ...

1
Danubian Sailor

Masalah dengan Java adalah bahwa bahasa ini dipelajari di sekolah, jadi itu adalah bahasa yang paling dikenal oleh programmer baru. Jadi jika Anda ingin membedakan diri dari massa, Anda harus belajar yang baru bahasa, Java adalah bahasa semua orang.

Alasan kedua adalah bahwa di sekolah atau di perusahaan besar ketika Anda ingin membangun aplikasi web, guru atau orang yang sudah ada memberi Anda banyak kerangka kerja Java untuk membantu Anda membangun aplikasi ini lebih cepat. Tetapi pada kenyataannya, dengan cara ini Anda membangun aplikasi web Anda tanpa benar-benar memahami web (HTTP, HTML, CSS, Javascript, dll ...). Tren ini kurang terlihat dengan bahasa lain seperti RoR atau Python, pengembang menggunakan bahasa ini memiliki pemahaman yang lebih baik tentang web.

Jadi statup yang ingin membangun aplikasi web modern lebih suka menggunakan RoR, PHP atau Python untuk menarik pengembang web yang baik, mereka yang memahami web dan tidak hanya bahasa pemrograman.

1
Alexandre Vivien

Jika dengan "modern" yang Anda maksud populer (as-in mendapatkan sebagian besar liputan pers) maka alasan Java tidak digunakan sangat sederhana - karena semua "anak keren" menggunakan Ruby (atau Python, atau Clojure, atau Scala, atau apa pun yang "keren" hari ini).

Ada arti yang lebih dalam untuk ini, orang-orang yang sama yang menggunakan Ruby atau Python untuk menulis aplikasi web "modern" mereka biasanya adalah inovator yang benar-benar hebat. Orang yang suka memecahkan masalah menjengkelkan dengan cara sederhana dan efektif sambil menghemat waktu dan tenaga otak melakukannya.Beberapa mungkin mengatakan ini adalah kualitas programmer yang baik.

Orang-orang ini biasanya juga menciptakan banyak pers di sekitar proyek mereka, yang jarang dilakukan perusahaan besar. Baik itu dengan melakukan banyak sumber terbuka, atau menulis blog, atau apa pun.

Jadi tarikan gravitasi orang-orang ini ke dunia bahasa dinamis, di mana mereka ditawarkan cara yang lebih sederhana/lebih kecil/lebih cepat/lebih ramping untuk menyelesaikan masalah mudah dipahami. Sedihnya itu berarti bahwa orang yang sama yang hebat Java pengembang, matang dan meninggalkan kereta musik Java karena mengganggu dan sulit (bagi mereka) untuk menggunakan dan pecahkan masalah yang sama ini.

Jika membuat aplikasi web sederhana dengan kerangka kerja MVC X, perlu menulis/mengedit hanya 100 baris kode di Rails/Django, dan sebaliknya membutuhkan 10.000 baris kode di Java untuk melakukan hal yang sama - sangat jelas mengapa itu mungkin tampak menjengkelkan.

Mengenai pernyataan Anda, "Saya belum melihat sesuatu yang kritis" hilang "dari Jawa, mencegah saya membangun aplikasi yang sama." Pertanyaannya adalah - jika Anda memiliki jumlah pengalaman yang sama dalam Rails/Django/Apa pun ... bagaimana kedua aplikasi ini Java dan non-Jawa dibandingkan satu sama lain, mengukur waktu dan usaha dan metrik lainnya yang dapat Anda temukan.

1
Evgeny

Jawaban yang menarik diberikan oleh Dries Buytaert, yang mendirikan drupal. Meskipun PhD-nya adalah tentang Jawa, ia memilih php untuk drupal, dan ia tidak menyesal melakukannya. Anda dapat membacanya (dan beberapa komentarnya) di sini: http://buytaert.net/why-php-and-not-Java

Akan sangat sulit untuk mendapatkan massa kritis jika Drupal ditulis dalam Java.

0
johanvdw