我編寫java web應(yīng)用程序10年,我切換到python,4多年前。我覺得我使用python更有效率,可以在更短的時間內(nèi)得到更多的工作,說實話,當(dāng)我在python開發(fā)時,我會更開心。這里有一些原因,為什么我認為python是更好,然后基于我的個人經(jīng)驗,Java,你的milage可能非常。
Web框架:
當(dāng)我第一次開始用Java編程web應(yīng)用程序時,Struts剛剛出來,這不是很好,但它是好的東西。我創(chuàng)建了一堆struts應(yīng)用程序,并在其他框架中的一些。每當(dāng)一個新的框架出來(Tapestry,Wicket,GWT,條紋,grails,AppFuse,Play,RichFaces,Spring等),我會試試看看它是否更好,大多數(shù)時候,它只是一個更好,有時不是更好。我不得不說游戲框架是朝正確方向邁出的一步。
不包括電池:
Java中令人煩惱的部分之一是,你使用的大多數(shù)庫不包括在java本身中,你必須從apache commons等地方包含一噸第三方庫。如果你使用類似hibernate的任何其他大型庫,你終會在Jar依賴地獄,其中hibernate需要一個版本的jar,而另一些需要另一個版本。如果你以錯誤的順序加載jar文件,你是運氣不好。你需要依靠工具,如maven和ivy來管理你的依賴,這只是導(dǎo)致更多的依賴項到你的項目,導(dǎo)致項目是巨大的。我有一些戰(zhàn)爭文件100MB +戰(zhàn)爭文件的簡單的網(wǎng)絡(luò)應(yīng)用程序。
選項太多:
由于某種原因,似乎有太多不同的方式在Java中做同樣的事情。根據(jù)wikipedia(http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java)和23個不同的ORM,有超過38個不同的web框架(http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software# Java)只是舉幾個例子。如果你看其他語言,他們有一個更合理的數(shù)字。有些人認為有很多選擇是一件好事,但它不是導(dǎo)致在開發(fā)人員社區(qū)大量浪費的努力,每個人都在重塑同一個輪,如果你是一個新的人的語言,你有太多的選擇從。
應(yīng)用服務(wù)器:
Java Web應(yīng)用程序真的很重,需要大量的資源才能運行。他們尤其是記憶饑餓。像任何軟件,他們可以調(diào)整,以減少他們的資源足跡,但與其他語言相比,他們的開箱設(shè)置是可怕的。在我過去,我使用weblogic,websphere,Jboss,tomcat和jetty。我只使用前三個,當(dāng)我被迫使用EJB的,但即使你不使用EJB,他們是大的應(yīng)用程序服務(wù)器,有時很難配置和正確運行。 Tomcat和Jetty更好,更容易設(shè)置,但仍然是資源豬。
應(yīng)用程序托管:
如果你沒有運行自己的服務(wù)器,真的很難以合理的價格為你的java應(yīng)用程序找到共享托管。主要原因是因為java應(yīng)用程序需要比其他語言更多的內(nèi)存,所以它是沒有意義的共享托管提供商花他們寶貴的RAM運行一個java網(wǎng)站,當(dāng)他們可以在同一個地方運行5 php網(wǎng)站。這意味著有更少的提供商提供java托管,這反過來意味著更高的運行您的網(wǎng)站的成本。
開發(fā)時間:
當(dāng)我在java開發(fā),我發(fā)現(xiàn)自己慢得多,我可以在python做什么。我需要進行更改,編譯,重新部署然后測試,這會減慢迭代過程。我知道有辦法使這更快,但即使是好的,我感覺很多