Ini setengah kata-kata kasar, setengah pertanyaan.
Apakah layak menggunakan Grails? Saya mencoba mengembangkan aplikasi web berbasis database yang relatif sederhana. Keahlian saya adalah di Java, jadi Grails sepertinya merupakan pilihan yang bagus. Pada awalnya saya berpikir untuk menggunakan Spring, JPA dan Hibernate, tetapi saya telah menggunakannya sebelumnya dan mengalami semua jenis konfigurasi yang membosankan dan pekerjaan pengkodean. Grails mengiklankan dirinya sebagai pemecahan masalah ini.
Rasa frustrasi terbesar saya dengan Grails adalah semua hal kecil yang tidak berhasil. Yang saya maksud adalah bahwa itu tidak berfungsi sebagaimana yang diharapkan orang secara intuitif. Tepinya sangat kasar. Saya mengalami masalah terus-menerus. Kadang-kadang saya kurang memahami Grails - di lain waktu saya menemukan bug Grails yang sah.
Salah satu masalah utama adalah kurangnya integrasi Eclipse yang baik. Ada plugin Groovy dan Grails, tetapi tidak melakukan banyak hal selain penyorotan sintaks. Memanggil Groovy dari Java dan sebaliknya sangat menyakitkan untuk dikonfigurasi . Tidak memiliki dukungan IDE yang baik adalah hal yang mengecewakan.
Apa yang terjadi adalah saya duduk mencoba mengembangkan aplikasi web saya. Di penghujung hari, saya menyadari bahwa saya telah menghabiskan sekitar 85% hari untuk men-debug masalah terkait Grails. Jika tidak masalah Eclipse maka itu eager loading , mengambil dalam pandangan , satu-ke-banyak hubungan , perilaku berkas bug aneh kosong , bug properti aneh / getter - itu hanya berjalan dan terus. Ini hanyalah contoh dari masalah yang saya hadapi hari ini. Duduk terakhir saya dengan Grails menghasilkan banyak masalah yang berbeda.
Saya terkadang bertanya-tanya apakah itu sepadan. Saya penasaran apakah orang lain pernah mengalami ini. Apakah ada orang yang benar-benar menggunakan Grails untuk membuat aplikasi web secara produktif? Apakah ada kerangka kerja lain untuk pengembangan web cepat yang harus saya pertimbangkan?
Jawaban:
Kami memiliki tim yang terdiri dari 12 orang, semuanya pengembang senior Java berpengalaman yang mempelajari Grails dari 0.6B dan kami semua masih mengerjakan proyek berdasarkan Grails. Saya tidak akan kembali ke Java dengan sukarela, dan kami semua lega karena tidak tahu cara pergi ke suatu tempat dengan cepat menggunakan aplikasi Grails.
Itu adalah perjuangan, tidak mudah dan ada / ada frustrasi.
Namun demikian kami menyampaikan sesuatu dengan sangat cepat mengingat upaya berkelanjutan kami .. Ada bug, banyak yang memiliki solusi.
Saya telah mendengar beberapa contoh pengembang yang pandai Java mencoba menyelami mantera proyek Grails yang dalam dan kompleks. Kami menghindari semua Java dan memilih Grails dan Groovy murni. Kami memastikan bahwa kami memulai dengan sederhana, membangun kompleksitas semudah dan sepraktis mungkin .. Kami tidak berani menyelam sedalam-dalamnya dan berharap pengetahuan Java kami cukup untuk membantu kami.
Kami akhirnya membuat sesuatu yang besar dan kompleks yang bekerja dengan luar biasa dan melakukannya jauh lebih cepat daripada menulis versi Java / Spring / Hibernate murni; dan itu tanpa dukungan IDE yang layak dan situasi yang jauh lebih buruk dalam hal bug daripada hari ini.
Mengenai dukungan Eclipse, satu-satunya IDE nyata yang digunakan untuk Grails / Groovy adalah Intellij - dukungan Eclipse jauh di belakang, sayangnya: Saya adalah pencinta Eclipse dan saya jauh dari menjadi seorang Intellij convert - dukungan Grails / Groovy meniup segalanya meskipun.
Ya, Grails mungkin belum dewasa dibandingkan dengan Spring. Atau Hibernasi. Dan saya berani bertaruh bahwa dalam 1,5 tahun pertama keberadaan mereka, mereka sama-sama penuh dengan masalah.
Karena itu, menempatkan tanggung jawab pada Anda, untuk menjaga agar Anda menjaga kompleksitas seminimal mungkin, untuk menguji dengan hati-hati terlebih dahulu (menurut pendapat kami) dan membangun kompleksitas secara bertahap dan dengan hati-hati.
Tidak ada solusi kode cepat dengan Java setelah Anda menggunakan Spring / Hibernate di stack. Kompleksitas yang diwujudkan Grails adalah cerminan dari kompleksitas Spring / Hibernate sendiri. Jika Anda merasa bahwa waktu Anda lebih baik dihabiskan untuk melakukannya dengan Java murni, saya tidak akan membantah sebaliknya .. Saya masih memiliki WTF saya tetapi sekarang karena kurva pembelajaran yang curam ada di belakang saya, saya pikir saya akan tetap menggunakan Grails lagi.
sumber
Saya sangat menikmati menulis aplikasi grails karena dua alasan:
Saya pikir setelah menjadi akrab dengan grails seseorang menyelesaikan pekerjaannya dengan sangat cepat dan elegan.
Begitu banyak sisi positifnya. Sisi minusnya adalah kinerja, yang menurut saya mengenai dua aspek: penerapan dan pengembangan yang didorong pengujian.
Saya belum berhasil menjalankan lebih dari 3 aplikasi grails di satu server (sewaan), karena saya dengan cepat mencapai batas memori dan kinerja. Ada terlalu banyak kerangka kerja yang disertakan.
Plus, pelari grails tidak sebanding dengan nama itu. Saat saya menjalankan unit test, semuanya harus dilakukan dalam sekejap, bukan dalam 10 hingga 20 detik. Jadi saya selalu menulis logika bisnis di java biasa, karena saya bisa mengujinya lebih cepat. Tapi saya rasa ini bisa diatasi dengan integrasi yang lebih baik ke dalam IDE (eclipse).
sumber
Saya pikir dukungan Spring untuk Grails akan menjadi dorongan besar. Jika ada yang bisa memindahkannya melewati CRUD di web, itu orang-orang itu.
Saya juga berpikir itu mencapai massa kritis. Ada beberapa buku baru yang akan dipasarkan pada tahun 2009. Saya pikir itu akan membantu tingkat adopsi.
sumber
Saya sepenuhnya setuju dengan sentimen poster asli.
Kami adalah toko Java + Spring dan mengambil kesempatan untuk mencoba Grails. Kami pertama kali membuat aplikasi pengujian yang sangat kecil yang ternyata cukup mudah dilakukan dan bekerja dengan cukup baik. Masalah utama yang kami hadapi di sini adalah karena kurangnya pengetahuan kami tentang Groovy dan Grails.
Menyusul keberhasilan ini (peningkatan kepercayaan diri), kami memutuskan untuk mencoba proyek yang sedikit lebih besar. Ini merupakan pengalaman yang jauh lebih menyakitkan. Seperti yang disebutkan oleh orang lain, kami telah menemukan semua jenis bug dan masalah yang tidak langsung terlihat di permukaan. Siklus restart aplikasi menjadi sangat menyakitkan dan kecuali Anda memiliki cakupan pengujian yang sangat baik, mimpi buruk untuk melakukan segala jenis re-factoring.
Benar-benar frustasi memiliki kode gagal tanpa satu pesan kesalahan! Itu tidak berhasil dan Anda tidak tahu mengapa?
Saya suka kemudahan penggunaan plugin untuk JMS, Quartz dan Remoting untuk beberapa nama. Menghilangkan banyak XML yang membosankan.
Saya hampir menyukai GORM karena kesederhanaannya meskipun kami juga memiliki beberapa masalah.
Saya tidak suka sifat Groovy yang diketik secara longgar dan fakta bahwa Anda harus menjalankan aplikasi Anda hanya untuk dapat menangkap banyak kesalahan, mengingatkan saya terlalu banyak pada PHP atau Rails.
Pada akhirnya kami bertanya pada diri sendiri apakah mungkin untuk menulis perangkat lunak yang dapat dikelola yang rumit menggunakan Grails ...
Kami memiliki aplikasi Grails yang akan diproduksi .... jadi kita akan lihat.
sumber
Kami menggunakan grails + pada lapisan web + java dengan hibernate dan pegas pada lapisan layanan. Ini adalah tiga lapisan klasik (web, logika, data) di mana web adalah grails dan logika diimplementasikan di java. Seperti biasa di java, kami menggunakan objek kacang yang mewakili data antara lapisan yang berbeda.
Ini bekerja dengan cukup baik dan itu adalah solusi terbaik untuk kasus kami karena objek kacang sudah ada di sana, serta struktur database. Dari pengalaman kami, menurut saya grails memiliki nilai yang besar sebagai lapisan presentasi web, tetapi saya akan tetap menggunakan java untuk menulis aturan bisnis dan untuk mempertahankan data aplikasi - karena grails "adalah" java, semua integrasi grails-java cukup mudah.
Kami menggunakan eclipse untuk mengembangkan aplikasi grails dan integrasinya buruk, seperti yang dikatakan orang di sini. Tetapi, sebagai saran dari pengembang lain, kami menjalankan aplikasi grails dari baris perintah dan hanya menggunakan eclipse untuk menyimpan file sumber, dan ini bekerja dengan cukup baik, karena aplikasi diperbarui dengan cepat.
Saya belum merasa nyaman menggunakan grails di tempat lain selain di layer presentasi.
sumber
Saya memiliki lebih banyak pengalaman dengan Ruby on Rails daripada yang saya lakukan dengan apa pun di dunia Java, jadi saya datang dari perspektif yang berbeda. Secara keseluruhan, Grails adalah jauh lebih kasar-sekitar-the-tepi dari Rails adalah, sebagian karena ketidakdewasaan nya, dan sebagian karena hal itu bergantung pada dua kerangka kerja gila-gilaan kompleks di bawah-the-cover (Musim Semi dan Hibernate). Rails juga memiliki komunitas yang jauh lebih besar.
Tapi, Groovy sebagai bahasa telah membuat langkah besar, dan menyenangkan untuk diajak bekerja sama. Berkat penyempurnaan yang dilakukan di Groovy 1.6, Grails sedikit lebih tajam daripada JRuby di Rails, dan Anda mendapatkan dukungan XML yang luar biasa bagus melalui GPath. Ada banyak fitur bagus yang Anda dapatkan dengan menggunakan JVM (seperti konkurensi dan banyak kode threadsafe), tetapi tanpa harus mengacaukan Java (bahasa yang tidak terlalu saya pedulikan), jadi saya benar-benar kesulitan meyakinkan diri sendiri untuk menggunakan apa pun di MRI.
Python terlihat menggoda, harus saya akui.
Adapun masalah Eclipse Anda, saya tidak dapat membantu. Saya menggunakan Vim dan Emacs, terutama karena saya tidak tahan menggunakan IDE. Untuk bahasa dinamis seperti Groovy, Ruby, dan Python, saya rasa IDE tidak benar-benar memberikan manfaat nyata, karena sebenarnya tidak ada tempat untuk pembuatan kode, atau kebutuhan untuk mengkompilasi. Mungkin coba bekerja sans IDE sebentar dan lihat apakah semuanya lebih lancar?
Jadi, ya, menurut saya Grails sangat berharga. Mereka telah melakukan pekerjaan yang sangat baik dalam menyelesaikan segala sesuatunya secepat yang mereka miliki, dan tim Grails dan Groovy benar-benar berdedikasi.
sumber
Aku sepenuhnya bersamamu! Grails masih terasa sangat kasar di tepinya sehingga hampir lelucon untuk membandingkannya dengan Rails. Setidaknya pelaporan kesalahan sedikit lebih baik. Tapi saya rasa itu mungkin juga karena banyaknya perpustakaan yang digunakannya di balik sampul. Satu kata: stacktrace! Saya juga bukan penggemar berat pendekatan model-> db (Rails memiliki db-> model). Perancah juga menyisakan banyak ruang untuk perbaikan. Kemudian "tidak perlu restart" juga tidak berfungsi seperti yang diiklankan. (Saya tidak yakin apa yang lebih buruk - harus memulai ulang setiap saat atau terkadang menemukan perilaku aneh yang hilang saat Anda memulai ulang) Dan jangan biarkan saya memulai GORM. (Ketika butuh berjam-jam untuk menemukan cara apa yang akan menjadi SQL sederhana, Anda mulai bertanya-tanya apakah keseluruhan ORM ini benar-benar menghemat waktu Anda) Mungkin selama itu sederhana.
Maksud saya: ini masih salah satu pilihan kerangka kerja yang lebih baik ketika Anda datang dari dunia java. (Begitu banyak omong kosong yang tidak berguna di luar sana yang menyebut dirinya kerangka web) ... itu memiliki potensi. Saya hanya berharap itu tidak dibangun di atas begitu banyak hal rumit lainnya.
Bagaimanapun - semoga hal-hal ini beres. Saat ini saya mengintai di playframework.org yang juga terlihat sangat apik dan menjanjikan.
sumber
Ini akan sangat berguna ketika mereka menyelesaikan plugin eclipse. Lebih cepat lebih baik saya katakan. Mencoba menjual groovy kepada bos saya tidak akan mudah sampai itu terjadi.
sumber
Saya menemukan bahwa keuntungan terbesar dari Grails adalah saya tidak perlu lagi peduli dengan database - skema dibuat / diperbarui secara otomatis, dan persistensi sebagian besar dilakukan untuk saya (tidak perlu lagi menulis kueri SQL). Ini sangat melegakan. Hal lain yang agak bagus adalah setelah Anda menetapkan template untuk pengontrol dan tampilan, menambahkan objek domain baru cukup cepat. Meskipun saya curiga bahwa Anda akan melakukan perubahan berkelanjutan untuk pandangan Anda setidaknya, menyesuaikannya dengan yang sudah ada.
Adapun IDE - tampaknya IntelliJ adalah pilihan terbaik, tapi saya senang menggunakan Netbeans 6.5. Saya menggunakan MyEclipse untuk semua pengembangan lainnya, tetapi Netbeans memiliki dukungan Grails yang lebih baik sekarang.
sumber
Saya adalah pengguna Eclipse sebelum saya mulai menggunakan Grails. Dengan cepat terlihat bahwa itu tidak akan berhasil. Jadi saya mencoba Intellij dan NetBeans. Pada saat itu Intellij lebih baik dalam hal Groovy dan Grails. Namun, NetBeans gratis dan itu membuatnya cukup baik untuk saya. Sejak saat itu ketiganya memiliki versi baru atau plugin baru dirilis. Saya masih menggunakan NetBeans karena biaya Intellij. Dengan akuisisi G2One oleh Spring Source salah satu harapannya adalah dukungan lebih untuk Groovy dan Grails di Eclipse. Ini akan diperlukan untuk peningkatan adopsi.
Menggunakan Grails untuk proyek baru itu luar biasa. Begitu banyak bagasi Enterprise Java tidak lagi diperlukan. Saya dapat membayangkan mencoba mem-port sesuatu akan sulit karena sampai Anda memahami di mana kekuatan dan kelemahan kerangka kerja, sulit untuk menggunakannya secara efisien. Dijanjikan bahwa dukungan JSP akan lebih mudah di Grails 1.1, saya tidak tahu apakah menggunakan versi beta saat mencoba membuat kerangka kerja baru adalah ide yang bagus. Pengujian juga telah melalui revisi besar untuk versi baru. Jika waktu memungkinkan Anda dapat mempertimbangkan untuk menunggu karena rilis 1.1 akan segera.
Jika Anda memiliki kesempatan untuk mencoba Grails di IDE yang berbeda saat memulai proyek dari awal, saya pikir Anda akan melihatnya dari sudut pandang yang berbeda.
sumber
Saya baru saja mulai menggunakan grails pada proyek baru ... tidak harus menulis file xml APAPUN namun masih memiliki kekuatan Spring dan Hibernate benar-benar luar biasa.
Gunakan IntellijIDEA untuk IDE, saya sebenarnya menemukan Grails melalui IDE (saya mungkin bias, saya benci eclipse).
sumber
Sama sekali. Ada begitu banyak framework Java sehingga standarnya disetel cukup tinggi untuk pendatang baru, dan ini adalah bukti Grails bahwa ia mampu naik ke atas di ruang yang begitu padat.
Masih memiliki beberapa tepi yang tajam, tetapi itu hanya masalah waktu sebelum kusut, proyek yang mendasarinya SANGAT berharga.
sumber
Grails mungkin terlalu besar untuk jenis aplikasi Anda (berdasarkan banyak file yang dibuatnya pada inisialisasi pertama dan sumber daya yang diperlukan). Jika Anda mencari sesuatu yang sederhana, Grails mungkin bukan yang Anda cari. Jika Anda mencari sesuatu yang sederhana dan berhasil, sejauh ini menurut saya Django dapat melakukan pekerjaan Anda dengan baik. Lihatlah betapa sederhananya (berapa banyak file yang dibutuhkan) untuk membuat aplikasi CRUD dari tutorialnya . Dari sini, aplikasi Anda dapat (secara relatif) mudah diskalakan seiring dengan berkembangnya kebutuhan dan persyaratan Anda.
sumber
Saya tidak yakin mereka bisa membuat Grails benar, Anda tahu. Dan yang saya maksud adalah membahas semua detail (kecil dan besar) yang pada akhirnya membuatnya terasa rapuh dan rapuh. Saya bahkan tidak yakin bahwa ada tim pengembangan nyata (artinya lebih dari 2 orang) di belakangnya.
Setiap kali saya mengulangi fitur proyek Grails saya, mencoba meningkatkan sesuatu, itu adalah alur kerja yang sama: semuanya berantakan, lalu ini adalah ratusan siklus pengujian 'google', lalu Anda menemukan alasan mengapa Anda tidak dapat melakukannya apa yang Anda inginkan dan Anda melakukan sesuatu yang lain.
Pada akhirnya, Anda frustrasi karena Anda bahkan tidak ingin menyentuh apa pun yang berjalan. Dan hal-hal yang tidak baik, jatuhkan!
Saya sedang mempertimbangkan untuk beralih ke Rails melalui JRuby. Itu mungkin yang terbaik dari kedua dunia: kerangka kerja web yang mumpuni dengan komunitas yang aktif dan besar, tim pengembang yang berdedikasi, platform yang tidak didasarkan pada kerangka kerja yang dipertanyakan dan kompleks seperti Spring atau Hibernate, siklus rilis yang cepat dan ambisius. Dan JRuby karena terus terang begitu banyak aset Java di ransel saya, saya tidak bisa membuangnya begitu saja.
sumber
Jika keahlian Anda ada di Jawa seperti yang Anda katakan. Anda harus melihat Play Framework - ini adalah kerangka kerja web yang terinspirasi oleh Ruby on Rails dengan siklus pengembangan yang sangat singkat - cukup simpan file sumber Java Anda dan perbarui browser web Anda. Dan jika Anda ingin mencoba bahasa lain, Play Framework memiliki modul yang memungkinkan Anda menggunakan Scala.
Saya suka Play Framework karena mudah dipahami dan memiliki kinerja yang baik. Anda juga dapat menggunakan JPA dan Hibernate untuk lapisan ORM jika Anda mau.
sumber