Я програмував веб-додатки java протягом 10 років, перш ніж я перейшов на python, 4+ років тому. Я відчуваю, що я набагато продуктивніше використовую python і можу набагато більше зробити за коротший проміжок часу, і якщо чесно, я набагато щасливіший, коли розвиваюся в python. Ось декілька причин, чому я вважаю, що пітон краще, ніж Java, виходячи з мого особистого досвіду, ваш пробіг може бути дуже.
Веб-рамки:
Коли я вперше почав програмувати веб-додатки на Java, Struts просто вийшов, і це було не чудово, але це було найкраще з наявних речей. Я створив купу додатків з підкосами та ще декілька в інших структурах. Щоразу, коли виходила нова рамка (Гобелен, Хвіртка, GWT, смуга, грааль, AppFuse, Play, RichFaces, Весна тощо), я б спробував це і побачив, чи було це краще, а в більшості разів це було лише трохи краще , а іноді і зовсім не краще. Я мушу сказати, що ігровий каркас - це крок у правильному напрямку.
Батареї не входять:
Однією з найбільш дратівливих частин Java було те, що більшість бібліотек, якими ви користуєтесь, не були включені до самої Java, вам довелося включити тону сторонніх файлів з таких місць, як apache commons. Якщо ви використовуєте щось подібне до сплячки з будь-якою іншою великою бібліотекою, ви опиняєтесь у пеклі залежностей від Jar, де в сплячому режимі потрібна одна версія баночки, а ще щось - інша версія. Якщо ви завантажуєте файли jar у неправильному порядку, вам не пощастить. Вам потрібно залежати від таких інструментів, як Maven та Ivy, щоб керувати своїми залежностями, і це просто привносить більше залежностей у ваш проект, що призводить до того, що проекти будуть величезними. У мене було кілька файлів війни 100 Мб + файли війни для найпростіших веб-додатків.
Занадто багато варіантів:
Чомусь, мабуть, існує занадто багато різних способів зробити те саме на Java. За версією wikipedia ( http://en.wikipedia.org/wiki/Comppare_of_web_application_frameworks#Java ) існує понад 38 різних веб-рамок для Java та 23 різних ORM ( http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software# Java ), просто назвати пару прикладів. Якщо ви подивитесь на інші мови, їх кількість є більш розумною. Деякі люди вважають, що мати багато варіантів - це добре, але це не призводить до багато витрачених зусиль у спільноті розробників, усі винаходять одне і те саме колесо, і якщо ви новачок для мови, якою володієте занадто багато варіантів для вибору.
Сервери додатків:
Веб-додатки Java справді важкі та потребують великих ресурсів для роботи. Вони особливо голодні пам’яті. Як і будь-яке програмне забезпечення, вони можуть бути налаштовані на зменшення слідів ресурсів, але порівняно з іншими мовами їх жахливе налаштування є жахливим. У своєму минулому я використовував weblogic, веб-сферу, Jboss, tomcat та jetty. Перші три я використовував лише тоді, коли мене змусили використовувати EJB, але навіть якщо ви не використовуєте EJB, вони були великими серверами додатків, а іноді важко налаштувати та запустити правильно. Tomcat і Jetty набагато кращі та простіші в налаштуванні, але все ще є ресурсами.
Хостинг додатків:
Якщо ви не працюєте з власним сервером, важко знайти спільний хостинг для ваших додатків Java за розумною ціною. Основна причина полягає в тому, що додатки java потребують набагато більше пам’яті порівняно з іншими мовами, тому не має сенсу для провайдера спільного хостингу витрачати свою цінну оперативну пам’ять на веб-сайті java, коли вони можуть запускати 5 php-сайтів в тому ж місці. Це означає, що менше постачальників послуг, які пропонують java хостинг, що, в свою чергу, означає більші витрати на запуск вашого веб-сайту.
Час розробки:
Коли я розвивався в java, я виявив себе набагато повільніше, ніж те, що я можу робити в python. Мені потрібно було б внести зміни, компілювати, перерозподілити, а потім протестувати, і це уповільнює ітераційний процес. Я знаю, що є способи зробити це швидше, але навіть в кращому випадку я відчував себе набагато повільніше, ніж те, що я можу зробити в python.
Існує також набагато менше кодового коду, щоб зробити те ж саме в python, тому я витрачаю менше часу на розробку коду.
Ява просто відчуває багато інженерів, багато API та інтерфейсів - це лише спосіб ускладнення того, що ви хочете зробити. І всі, і їхній брат вважають, що вони архітектори Java, і це призводить до великих складних систем, які важко використовувати та розвивати.
IDE:
Коли я розвивався в Java, я відчув, що я приєднався до IDE, я втратив його. IntelliJ - найкращий IDE на ринку, і він важко перейшов на python, оскільки для python не було нічого подібного. Тож замість IDE я просто використав textmate, який є просто звичайним текстовим редактором. Спочатку було важко, але оскільки це був лише текстовий редактор, це було дійсно швидким та чуйним додатком. Я міг би відкрити весь свій проект за кілька секунд, тоді як коли я хочу відкрити проект в IDE, це може зайняти хвилину і більше, з машиною з тоною оперативної пам’яті. Виробники IntelliJ вийшли з редактором python під назвою pycharm, я купив його, коли він вперше вийшов, і це чудово. Але я зрозумів, що IDE для python мені не потрібен, я добре в редакторі тексту. Коли я повертаюся до роботи над веб-додатками Java, які мені доводиться робити час від часу, я намагаюся використовувати текстовий редактор, але я ще не зовсім це освоїв. Мені особисто потрібен IDE для Java більше, тому що якщо я зіпсую щось, потрібно більше часу, щоб перекомпілювати та перерозподілити, що сповільнює мене.
ORM:
Коли я вперше почав використовувати Hibernate як ORM, я подумав, що це здорово, у нього були проблеми, і це було не ідеально, але було краще, ніж я робив раніше. Я був задоволений цим, поки я не зробив заявку з ORM Джанго на проект python, і це відкрило мої очі, тобто ОРМ повинен працювати. Після цього проекту я повернувся до сплячого режиму, і я просто відчув розчарування та прагнув повернутися до ORM Джанго. Ще один великий пітон ORM - це sqlalchemy, яка схожа на ORM Django, але трохи інша. У мене обмежений досвід роботи з ORM ROR, але, як я пам’ятаю, це було також непогано.
Шаблони:
Системи веб-шаблонів на Java не такі гарні, і я думаю, що я спробував їх усі (плитки, фрейма, швидкість тощо). Більшість із них пропонують лише основні функціональні можливості і дуже важко працювати. Що стосується Python, мої два улюблені - це шаблони Django та Jinja2, у них є все, що мені могло знадобитися в шаблоні, і вони дуже прості у використанні.