Мне кажется, что главная причина почему тул пишется на Java — портируемость между платформами, которое дает не только сам язык, но и Swing Framework который многие недолюбливают.
Я сам Java программист. Использовал и Eclipse и IntelliJ IDEA. IntelliJ IDEA дает совершенно другое, приятное ощущение кода.
Мне пока что не удалось поучаствовать ни в одном проекте на C++.
Возможно, с выходом IDE, в C++ удастся вдохнуть новую жизнь в этот язык и привлечь новых людей(да хотя бы и таких любителей крепкого кофе как я), которым нужна производительность и мощь которую дает С++ и скорость написания кода и удобные тулья как Java, тех которые не готовы перейти на что-то экзотичное типа Go.
Ну не все дерьмо. Можно и не использовать JBoss, EJB, Arquillian и прочую энтерпрайз money hungry херню когда это не нужно.
Можно стек и упростить. Многие приложений не неуждаются в полноценном Апп Сервере с поддердкой J2EE, хватает тех фичей что предоставляют сервлет контейнеры Jetty/Tomcat. Да и по сути по мере надобности можно тот же JMS etc прикрутить к Jetty/Tomcat'у.
Для меня лично при увеличении кодовой базы, то что творится в коде на Java/[другом языке со статической типизацией] понимать легче, чем то, что творится с кодом с динамической типизацией. Легче допиливать новые фичи и фиксить баги.
А теперь представьте себе поддержку интернет банка который написан на PHP и сменилось несколько поколений разработчиков. И код там разного качества. Как легко и просто это будет поддерживать?
И вам нужно впихнуть какой-то новый функционал. У вас есть пару десятков разрозненных модулей и вам нужно удалить часть старой фунциональностей и заменить на новый. Если мой проект на Java, то у меня что-то просто нескопмилируется где-то и я узнаю об этом раньше, чем это выйдет на продакшн(в общем случае, если не использовать Reflection, за необоснованное использование которого нужно люлей вставлять).
Я полностью согласен с тем, что качество кода зависит от девелопера.
Я говорю немного о другом. О том что после того, как проект пересекает какую-то черту по фичам/размеру кодовой базы, сложность дальнейшей его поддержки и внедрения новых фич на Python/Ruby/PHP становится на порядки сложнее, чем на Java/[другом языке со статической типизацией].
Если интересует чуть глубже, то:
Контейнер Tomcat или Jetty, для веб-морды Spring MVC или Struts 2, персистенс — Hibernate или MyBatis или Spring JDBC.
На требования нужно смотреть что бы сказать точнее в пользу чего склонился бы.
Я писал на PHP какое-то время назад и в начале действительно проще и быстрее. Но это начало длится очень недолго. Какой-то серьезный проект я бы не стал писать на PHP/Ruby/Python. Это связано с тем, что потом поддерживать эту систему будет адски сложно когда она разрастется. Хотя нет, если бы это был проект «на выброс» из одной странички, то может и стал бы.
А проект по типу интернет магазина уже не стал бы.
Скорость разработки это не только скорость того, как скоро увидишь свои изменения после изменения в коде, но и то, как эффективно ты сможешь поддерживать код и то, как быстро ты сможешь заделиверить фичи и то, как быстро ты сможешь выполнить требование о том, какую нагрузку твоя веб-аппликация/веб-сервис должен тянуть.
p.s. пишу на java от заката до рассвета и наоборот и не использую тяжеловесную ненужную требуху типа WebSphere и Weblogic, чувствуя себя с ней довольно комфортно и не испытываю каких-то проблем со скоростью разработки.
Я не очень люблю всякие EJB, JSF etc тяжелые штуки, ибо это либо не скалируется либо требует больших вложений что бы оно скалировалось. А потом конечно же еще небось понадобится WebLogic или прочий веселый апп-сервер за пару десятков/сотен тысяч килобаксов, т.к. только он поддерживает какие-то фичи.
Да, кстати и еще не понятно, как вся эта магия работает. Так что рекомендую отказаться от ынтырпрайза головного мозга на раннем этапе, пока он не пророс, и посмотреть на более легковесные вещи, которые позволяют достичь того же результата с меньшим эффортом.
Вот список в сторону которого я смотрел бы:
Сервлет контейнер: Tomcat или Jetty.
Dependency Injection: Spring Core или Guice.
Доступ к БД: Spring Jdbc Templates и/или Hibernate(Hibernate добавляет дополнительный оверхед, так что я от его использования на начальном этапе отказался бы).
REST Service: Spring MVC + Jackson для JSON'a или Jersey
Просто веб: Spring MVC или Struts 2.
Всю магию с отображениями и т.п. можно достичь при помощи Javascript и сторонних фреймворков.
Кстати вот отличный пример(на мой взгляд) для того, как начать работать с Jetty: habrahabr.ru/post/126066/.
Как научить и заставить человека писать тесты, если он не хочет этого делать? Речь не обо мне. Я считаю, что тесты нужны. Пускай хоть и не на 100% покрытие кода(и 100% покрытие всех брачней). Но они нужны. По крайней мере к идеалу стоит стремиться.
Но вот сидят два девелопера — я, сениор, и Вася, тоже сениор.
Я считаю, что тесты нужны — пишу их и мейнтейню. Сениор Вася на них поклал — коммитит код в репозиторий, не прогоняя тесты перед коммитом. Ломает тесты постоянно и вообще не считает их важными.
Вот как перетянуть такого человека на темную(а может светлую) сторону силы, если у человека есть уже сложившиеся взгляды на написание софта и он не приемлет чужое мнение на написание софта кроме своего?
Не нужно обобщать насчет того, что везде и всюду с тобой будут по-русски говорить :) Это далеко не так. Это не означает, что вообще работы без знания эстонского языка не найти. Как я уже сказал выше, без знания эстонского языка количество мест, куда можно устроиться работать уменьшается в разы(работать в офисе, я имел ввиду, а не заниматься фрилансом).
Мне пока что не удалось поучаствовать ни в одном проекте на C++.
Возможно, с выходом IDE, в C++ удастся вдохнуть новую жизнь в этот язык и привлечь новых людей(да хотя бы и таких любителей крепкого кофе как я), которым нужна производительность и мощь которую дает С++ и скорость написания кода и удобные тулья как Java, тех которые не готовы перейти на что-то экзотичное типа Go.
Вопрос просто для себя.
Можно стек и упростить. Многие приложений не неуждаются в полноценном Апп Сервере с поддердкой J2EE, хватает тех фичей что предоставляют сервлет контейнеры Jetty/Tomcat. Да и по сути по мере надобности можно тот же JMS etc прикрутить к Jetty/Tomcat'у.
P.S. Scala тоже очень ничего.
Интернет банков на PHP написанных слава богу я не видел. На Java видел и жить с этим можно.
Для меня лично при увеличении кодовой базы, то что творится в коде на Java/[другом языке со статической типизацией] понимать легче, чем то, что творится с кодом с динамической типизацией. Легче допиливать новые фичи и фиксить баги.
А теперь представьте себе поддержку интернет банка который написан на PHP и сменилось несколько поколений разработчиков. И код там разного качества. Как легко и просто это будет поддерживать?
И вам нужно впихнуть какой-то новый функционал. У вас есть пару десятков разрозненных модулей и вам нужно удалить часть старой фунциональностей и заменить на новый. Если мой проект на Java, то у меня что-то просто нескопмилируется где-то и я узнаю об этом раньше, чем это выйдет на продакшн(в общем случае, если не использовать Reflection, за необоснованное использование которого нужно люлей вставлять).
Я полностью согласен с тем, что качество кода зависит от девелопера.
Я говорю немного о другом. О том что после того, как проект пересекает какую-то черту по фичам/размеру кодовой базы, сложность дальнейшей его поддержки и внедрения новых фич на Python/Ruby/PHP становится на порядки сложнее, чем на Java/[другом языке со статической типизацией].
Если интересует чуть глубже, то:
Контейнер Tomcat или Jetty, для веб-морды Spring MVC или Struts 2, персистенс — Hibernate или MyBatis или Spring JDBC.
На требования нужно смотреть что бы сказать точнее в пользу чего склонился бы.
А проект по типу интернет магазина уже не стал бы.
Скорость разработки это не только скорость того, как скоро увидишь свои изменения после изменения в коде, но и то, как эффективно ты сможешь поддерживать код и то, как быстро ты сможешь заделиверить фичи и то, как быстро ты сможешь выполнить требование о том, какую нагрузку твоя веб-аппликация/веб-сервис должен тянуть.
работаю я в течении рабочего дня. Ключевое слово работаю. Проекты по срокам тоже не прогорают.
p.s. пишу на java от заката до рассвета и наоборот и не использую тяжеловесную ненужную требуху типа WebSphere и Weblogic, чувствуя себя с ней довольно комфортно и не испытываю каких-то проблем со скоростью разработки.
Да, кстати и еще не понятно, как вся эта магия работает. Так что рекомендую отказаться от ынтырпрайза головного мозга на раннем этапе, пока он не пророс, и посмотреть на более легковесные вещи, которые позволяют достичь того же результата с меньшим эффортом.
Вот список в сторону которого я смотрел бы:
Сервлет контейнер: Tomcat или Jetty.
Dependency Injection: Spring Core или Guice.
Доступ к БД: Spring Jdbc Templates и/или Hibernate(Hibernate добавляет дополнительный оверхед, так что я от его использования на начальном этапе отказался бы).
REST Service: Spring MVC + Jackson для JSON'a или Jersey
Просто веб: Spring MVC или Struts 2.
Всю магию с отображениями и т.п. можно достичь при помощи Javascript и сторонних фреймворков.
Кстати вот отличный пример(на мой взгляд) для того, как начать работать с Jetty: habrahabr.ru/post/126066/.
Но вот сидят два девелопера — я, сениор, и Вася, тоже сениор.
Я считаю, что тесты нужны — пишу их и мейнтейню. Сениор Вася на них поклал — коммитит код в репозиторий, не прогоняя тесты перед коммитом. Ломает тесты постоянно и вообще не считает их важными.
Вот как перетянуть такого человека на темную(а может светлую) сторону силы, если у человека есть уже сложившиеся взгляды на написание софта и он не приемлет чужое мнение на написание софта кроме своего?
P.S. Речь не о кыргтасе, а о том что бы ты понял и тебя поняли как минимум.