Я программировал Java-приложения в течение 10 лет, прежде чем перейти на python, 4+ года назад. Я чувствую, что я гораздо более продуктивно использую Python и могу сделать гораздо больше за более короткий промежуток времени, и, честно говоря, я намного счастливее, когда я развиваюсь в Python. Вот некоторые из причин, по которым я думаю, что Python лучше, чем Java, исходя из моего личного опыта, ваш успех может быть очень.
Веб-фреймворки:
Когда я впервые начал программировать веб-приложения на Java, Struts только что вышел, и это было не здорово, но это было лучшее, что было доступно. По пути я создал несколько приложений для Struts и несколько других. Всякий раз, когда выходил новый фреймворк (Tapestry, Wicket, GWT, полоса, Grails, AppFuse, Play, RichFaces, Spring и т. Д.), Я пробовал его и смотрел, был ли он немного лучше, и в большинстве случаев это было только немного лучше и иногда не лучше вообще. Я должен сказать, что игровые рамки - это шаг в правильном направлении.
Аккумуляторы не включены:
Одной из самых раздражающих частей Java было то, что большинство библиотек, которые вы используете, не были включены в саму java, вам приходилось включать тонну сторонних библиотек из таких мест, как Apache Commons. Если вы используете что-то вроде hibernate с любой другой большой библиотекой, вы попадаете в ад зависимости Jar, где hibernate требуется одна версия jar, а что-то еще - другая версия. Если вы загружаете файлы JAR в неправильном порядке, вам не повезло. Вы должны зависеть от таких инструментов, как maven и ivy, чтобы управлять своими зависимостями, и это просто добавляет больше зависимостей в ваш проект, что приводит к огромным проектам. У меня было несколько военных файлов размером более 100 МБ для самых простых веб-приложений.
Слишком много вариантов:
По какой-то причине кажется, что в Java слишком много разных способов сделать то же самое. Существует более 38 различных веб-фреймворков для Java в соответствии с Википедией ( http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java ) и 23 различных ORM ( http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#). Ява ) просто назвать пару примеров. Если вы посмотрите на другие языки, у них есть более разумное число. Некоторые люди считают, что наличие большого количества вариантов - это хорошо, но это не приводит к огромным потерям усилий в сообществе разработчиков, все заново изобретают одно и то же колесо, и если вы новичок в своем языке, который у вас есть слишком много вариантов для выбора.
Серверы приложений:
Веб-приложения Java действительно тяжелые и требуют много ресурсов для запуска. Они особенно жаждут памяти. Как и любое другое программное обеспечение, они могут быть настроены так, чтобы уменьшить объем ресурсов, но по сравнению с другими языками их стандартная настройка ужасна. В прошлом я использовал weblogic, websphere, Jboss, tomcat и jetty. Я использовал первые три, когда меня заставляли использовать EJB, но даже если вы не используете EJB, они были большими серверами приложений, а иногда их было сложно настроить и запустить правильно. Tomcat и Jetty намного лучше и проще в настройке, но по-прежнему занимают много места.
Хостинг приложений:
Если у вас нет собственного сервера, очень сложно найти общий хостинг для ваших java-приложений по разумной цене. Основная причина заключается в том, что java-приложениям требуется намного больше памяти по сравнению с другими языками, поэтому провайдеру общего хостинга не имеет смысла тратить свою ценную оперативную память на java-сайт, когда они могут запустить 5 php-сайтов в одном месте. Это означает, что есть меньше провайдеров, предлагающих хостинг на Java, что, в свою очередь, означает более высокие затраты на запуск вашего сайта.
Время разработки:
Когда я разрабатывал в Java, я оказался гораздо медленнее, чем то, что я могу сделать в Python. Мне нужно будет внести изменения, скомпилировать, повторно развернуть, а затем протестировать, и это замедляет итерационный процесс. Я знаю, что есть способы сделать это быстрее, но даже в лучшем случае я чувствовал себя намного медленнее, чем то, что я могу сделать в python.
Существует также гораздо меньше стандартного кода, чтобы сделать то же самое в Python, поэтому я трачу меньше времени на разработку кода.
В Java просто заложено много деталей. Многие 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 Джанго. Еще один замечательный Python ORM - это sqlalchemy, который похож на ORM Джанго, но немного отличается. У меня ограниченный опыт работы с ORM ROR, но, насколько я помню, это было довольно хорошо.
Шаблоны:
Системы веб-шаблонов в Java не так хороши, и я думаю, что попробовал их все (тайлы, freemarker, скорость и т. Д.). Большинство из них предлагают только базовую функциональность и с ними трудно работать. Со стороны Python мои два фаворита - это шаблоны Django и Jinja2, в них есть все, что мне может понадобиться в шаблонизаторе, и они действительно просты в использовании.