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.