Как профессиональный Java-программист, я пытался понять - почему ненависть к Java для современных веб-приложений?
Я заметил тенденцию, что из современных веб-стартапов, относительно небольшой процент из них, кажется, использует Java (по сравнению с общей популярностью Java). Когда я спрашивал некоторых об этом, я обычно получал ответ типа «Я ненавижу Java со страстью». Но, похоже, никто не может дать однозначного ответа.
Я также слышал, что то же самое сообщество веб-стартапов негативно относится к разработчикам Java - более или менее подразумевая, что они медленные, а не креативные, старые.
В результате я потратил время на работу по подбору Ruby / Rails, в основном, чтобы выяснить, чего мне не хватает. Но я не могу не думать о себе: «Я мог бы сделать это намного быстрее, если бы использовал Java», в основном из-за моего относительного уровня опыта.
Но также потому, что я не видел ничего критически «отсутствующего» в Java, мешающего мне создавать одно и то же приложение.
Что подводит меня к моему вопросу (ам) :
Почему Java не используется в современных веб-приложениях?
Это слабость языка?
Является ли это несправедливым стереотипом Java, потому что он существует так долго (он был несправедливо связан с его старыми технологиями и не получил признания за его "современные" возможности)?
Является ли негативный стереотип разработчиков Java слишком сильным? (Java просто больше не «крут»)
Действительно ли приложения, написанные на других языках, быстрее создаются, легче поддерживаются и работают ли они лучше?
Используется ли Java только крупными компаниями, которые слишком медленно адаптируются к новому языку?
источник
Ответы:
Современные дневные стартапы должны появиться на рынке как можно скорее. Им не нужно тратить около шести месяцев, чтобы выпустить свое веб-приложение на Java.
Например, Twitter был построен с использованием Rails / Ruby, но как только он стал масштабируемым, они перешли на JVM.
Не говоря уже о том, что процесс разработки не продуктивен: code -> compile -> deploy, пока он находится в таких средах, как (Rails / Django / Grails): запустите тестовый сервер -> code -> измените вещи и посмотрите, что произойдет
Хорошей новостью является то, что JRebel позволяет вам мгновенно увидеть изменения кода.
источник
По моему опыту, Java для веб-приложений избыточна для небольших приложений. Например, простой блог с одной таблицей базы данных, содержащей записи в блоге, может быть выполнен намного проще.
Я обычно видел, как Java работает намного лучше в гораздо более крупных веб-приложениях (например, в банках и страховых компаниях), которые взаимодействуют с рядом других систем (таких как серверные части мэйнфреймов и базы данных, а также системы фоновой пакетной обработки одноранговых веб-служб ...) все в одном приложении).
Из того, что я видел, архитектура веб-приложения JavaEE обычно больше, чем требуется для небольших / простых веб-приложений.
источник
Я программировал 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, в них есть все, что мне может понадобиться в шаблонизаторе, и они действительно просты в использовании.
источник
Стартапы хотят блестящие. Что бы ни было блестящим: RoR, Groovy, Grails, ООП с PHP, Foobar, Wibble, Narf и т. Д.
Предприятие хочет стабильного, надежного и масштабируемого: Java и .NET отвечают всем требованиям (если все сделано правильно).
Текущий концерт: Финансовые услуги. Платформа: ColdFusion (по сути, библиотека тегов Java) и Java.
Предыдущие концерты:
Это все сайты с высоким уровнем безопасности. Никто из этих компаний никогда не рассматривал PHP, некоторые смотрели на RoR и видели слишком много проблем. У компании 401k была дочерняя компания, управляющая приложением .NET с компетентными разработчиками, приложение продолжало падать каждую неделю. Наконец они преобразовали его в Java и получили стабильность.
Единственные люди, которые смотрят свысока на Java, - это те, кто не имеет или практически не имеет опыта работы с ней, или был связан с плохими реализациями и теперь стеснительный. Они видят блестящую фигуру, если ее используют все классные дети, почему бы не я?
источник
Дополнение к ответу FrustratedWithFormsDesigner : так как я полагаю, что ваш вопрос больше ориентирован на небольшие сайты, есть важный аспект, который вам нужно учитывать для многих людей: хостинг повсеместен для PHP, но сложнее для сайтов Java или ASP. Это, однако, не является дефектом этих языков.
источник
Java абсолютно будет использоваться для современной разработки веб - приложений. Особенно когда вы доберетесь до чуть большего / более сложного / масштабируемого конца спектра веб-приложений.
Если вы заинтересованы в современных, продуктивных инструментах и средах, взгляните на:
Но я думаю, что наиболее по-настоящему современная веб-разработка на платформе JVM, вероятно, будет выполняться на одном из новых языков JVM, а не с использованием Java напрямую, поскольку Java просто обеспечивает основу с точки зрения базовых библиотек и серверной инфраструктуры. Существует много веб-разработок в Groovy ( Grails ), Scala ( Lift and Play ), JRuby ( JRuby on Rails ) и Clojure ( Noir , Ring / Enlive + множество пользовательских фреймворков), и это лишь некоторые из них.
Со всеми нововведениями, происходящими в новом языковом пространстве JVM, я лично подозреваю, что Java в конечном итоге станет «сборщиком серверного программирования».
источник
Google, Amazon или LinkedIn считаются современными?
Java используется для современных веб-приложений. Если вы посмотрите на предприятие, это наиболее интенсивно используемый язык для веб-приложений (внутренний).
Тем не менее, Java прошла через период, когда ее стандарты веб-разработки пытались быть всем для всех (возможно, до сих пор). «Не повторяйся» было ответом на адский XML и долгие циклы сборки веб-разработки на Java. В результате Java (EJB, Struts, JSF и т. Д.) Стала рассматриваться как вещь, которую все новые парадигмы пытались преодолеть.
Ява, язык многословен. Это за и против (отлично подходит для обслуживания, отстой для разработчиков). Существует ряд современных языковых функций, которые еще не вошли в Java, которые могут существенно сократить время кодирования (свойства, события, замыкания, генераторы, понимание списков и т. Д.). Таким образом, это может быть неприятно, если вы переходите с более современного языка. Тем не менее, их трудно добавить к зрелому языку, не становясь гнездом крыс, которое становится C #.
Многие языки, используемые в современной веб-разработке, динамически типизированы. Это позволяет использовать инструменты, которые могут динамически перезагружать код при его написании (это сложнее сделать на статическом языке - jrebel). Поскольку веб-разработка допускает быстрые итерации, динамическая перезагрузка - огромный выигрыш. Это значительно сокращает цикл разработки в новых проектах и упрощает правильную настройку пользовательского интерфейса и UX (методом проб и ошибок по своей природе).
Статические языки тоже имеют свое место. Для серверной логики, которая сложна, должна работать годами, должна масштабироваться без проблем, должна быть очень быстрой и должна быть полностью безошибочной, предпочтительны статически типизированные языки (такие как Java или даже C).
Кроме того, по мере роста числа разработчиков и оборачиваемости продуктов вероятность благих намерений людей, делающих ошибки, возрастает. Строгость и дисциплина, которой придерживается хорошо разработанный Java-проект (интерфейсы, шаблоны и святая вода для этих php-вампиров :)), помогает снизить долгосрочный риск. Хотя это также может быть достигнуто с помощью модульного тестирования, сеть безопасности, полученная из статической проверки (и статических анализаторов, таких как findbugs и clang), обеспечивает встроенный уровень покрытия кода, который трудно воспроизвести с помощью рукописных тестов. Не поймите меня неправильно, должны быть модульные и функциональные тесты, но реальные организации никогда не достигают 100% покрытия. Для того, что они проверяют, делают статические анализаторы.
Таким образом, в больших проектах (определяемых в большей степени размером команды, чем размером кода), где существует сложное взаимодействие между независимо разработанными частями кода, языки, подобные Java, все еще предпочтительны. Примеры включают в себя большие / сложные веб-приложения, такие как приложения у финансовых брокеров (ameritrade), финансовые биржи (nasdaq, nyse, возможно, Лондон после сбоя .net), онлайн-банкинг (почти все), электронная почта (google), аукцион (ebay) , и т.д.
С точки зрения производительности и масштабирования, ничто не превосходит платформу Java, поскольку она сочетает в себе масштабируемость и производительность для веб-приложений (в зависимости от того, как вы считаете разбиение приложений на Facebook). Twitter, например, должен был переписать большую часть своей инфраструктуры Ruby в Scala на Java VM, чтобы вывести китов-неудачников обратно в море. Я слышал о других крупных примерах, но они ускользают от меня прямо сейчас.
Также стоит подумать о безопасности. В то время как плагины Java-браузера пострадали по большей части от уязвимостей в безопасности, сама платформа Java является одной из наиболее безопасных платформ. Веб-приложения Java имеют репутацию очень безопасных. Практика кодирования, библиотеки и архитектура давно препятствуют ошибкам, которые делают возможными такие атаки, как внедрение SQL или переполнение буфера. Хотя другие веб-платформы (рельсы) имеют хорошую репутацию в области безопасности, ни одна из них не превосходит Java.
В итоге, большинство веб-приложений технически просты. Проще говоря, Java часто бывает излишним (как в старые времена, когда мы писали их на C :)). Если, однако, веб-приложение является сложным (бэкэнд или иным образом) или ожидается, что в нем будет более 100 разработчиков, Java будет сложно победить.
-
Что касается меня, я часто использую Grails, потому что он дает мне лучшее из обоих миров (то же самое можно сказать и о JRuby, который, как я слышал, становится все более и более популярным в мире Ruby).
Кстати, я считаю, что рост PHP действительно сбивает с толку. PHP как язык является грубым эквивалентом perl в удобочитаемости и VB в качестве результатов. Он поощряет ужасные практики, почти невозможен в обслуживании, сторонние библиотеки редко работают так, как ожидалось, и у него есть синтаксис, который заставит Ларри Уолла ... ну ... стену. Единственное объяснение, которое я могу придумать, - это то, что оно поддается инкрементальному обучению (например, VB). Другими словами, вы можете сделать что-то полезное, зная очень мало о программировании / администрировании, и вы можете расширять свои знания небольшими порциями за раз. Для этого многое можно сказать с точки зрения усыновления. Тем не менее, для тех, у кого есть все, пришлось поддерживать или заменять одно из миллиардов приложений VB, написанных «программистами» в мире корпоративных / mfg, Вы, вероятно, качаете головой и планируете выход на пенсию. :)
источник
Ну, я недавно встретился с парнем из Java, который был действительно взволнован новым проектом Spring Data из-за того, как мало кода требуется, чтобы получить базовый CRUD-доступ к вашей БД.
Я могу создать приложение CRUD , используя Rails (не только доступ к базе данных, но и представления и контроллеры) с помощью нескольких команд.
(Не в моей голове: новый проект, 1 команда scaffold на объект, 1 команда для переноса базы данных, 1 команда для запуска сервера.)
Это не имеет ничего общего с языком, все дело в инструментах. И кажется, что динамические языки имеют тенденцию иметь инструменты и структуры, которые удаляют много стандартного кода. (Чтобы восполнить недостаток мощных IDE, которые создают для нас шаблон).
Также я чувствую, что динамические языки значительно облегчают написание таких инструментов и сред. Я могу получить код для, скажем, Padrino или Rails (веб-фреймворков ruby) гораздо проще, чем код для Spring Roo. Это может быть связано с тем, что я знаю Ruby намного лучше, чем Java.
источник
В последние годы Java позиционируется как «предприятие». Что находится на другой стороне спектра того, что нужно стартапу. При разработке веб-приложений вам нужно 4 вещи - безболезненный доступ к базе данных, большие манипуляции со строками, сахар синтаксиса и быстрый итеративный процесс, чтобы сделать многочисленные небольшие изменения, необходимые вашему приложению.
Производительность, масштабируемость и стабильность немного ниже в списке приоритетов.
Кроме того, Java - очень нездоровый язык для кодирования. Он получил революционную возможность использовать строку в выражении switch только вчера. А javascript - это очень хакерский язык, поэтому после разработки интерфейса вы чувствуете себя очень стесненным, когда возвращаетесь в java.
Так что я полагаю, что это причины, по которым веб-стартапы избегают Java.
источник
Syntax sugar
Java практически не может использоваться для DSL, например, файл конфигурации и маршрутов Play не является файлом Java, он имеет внешний синтаксис, который меньше, чем, например, у django settings.py и urls.py; нет списка понимания; важные типы данных (например, карты, списки) не импортируются по умолчанию; идиотский «один класс на файл» действительно мешает; и API Java имеют тенденцию быть излишне многословными. Кроме того, вы не можете использовать перечисления при переключении между строками, полученными из параметра GET / POST.IRepository<T>
сIQueryable<T> Where(Expression<Func<T, Boolean> Expression)
. Интересно, станут ли они более популярными в Java, когда она получит лямбды? Вероятно, это зона комфорта, но Java чувствует себя многословно - и очень похоже на то, что мне вручили достаточно частей, чтобы собрать 50 различных типов автомобилей без гарантии того, что две части совместимы друг с другом.В настоящее время я работаю в компании, в которой довольно много разработчиков «Я ненавижу Java». Это меня раньше тоже оглушало. Я, конечно, ненавижу все запасы технологий, которые доступны с Java. Это делает принятие решений слишком сложным. Это как когда у тебя слишком много выбора, у тебя нет выбора. Вы должны потратить время на сотню фреймворков, чтобы действительно придумать фреймворк, который работает для вас. Стандартная архитектура Servelt очень сложна для большинства приложений. Это не относится к Ruby, Django и прочим. Они являются скорее единой структурой, а не языком.
Самые большие жалобы, которые я слышу от разработчиков
Таким образом, в целом Java навязывает крутой поворот в начале проекта, что означает слишком много денег для фиксации. Добавьте к этому огромное сообщество, связанное с Java, каждое из которых думает по-разному, и никто не может по-настоящему руководить всем сообществом. Они также не видят разговоров и конференций, проводимых сообществом, чтобы показать все классные новинки. Нет новых крутых книг. Похоже, что Java упадет, потому что она использовалась для решения слишком многих различных проблем несколько лет назад.
источник
Фреймворки для веб-разработки на Java имеют довольно мало времени на изучение, они часто перебивают то, что вам нужно, и большая часть косвенности, требуемой для того, чтобы заставить вещи работать, просто ... болезненно ... работать.
Раньше я работал в компании, которая занималась разработкой Spring / Java, и в лучшем случае считал, что фреймворк громоздок. Я не могу сказать много приятных вещей о среде Spring, за исключением того, что у меня был друг, который занимался разработкой Struts, и он думал, что Struts еще хуже. Веб-фреймворк - это не что иное, как создание приложений для настольных компьютеров или мобильных приложений (например, для Android), и в нем есть много очень абстрактных идей, которые действительно требуют времени для осмысления (хотя, разумеется, это дает вам большие возможности и возможности, если вы Вы профессионал и делаете что-то действительно сложное, например приложение корпоративного уровня). Я люблю программировать Java для мобильных или настольных устройств, но Java для веб-приложений? Не так много.
Лично я не занимался программированием на Ruby / Rails, но мой друг, который раньше занимался в Struts, сейчас занимается веб-программированием на Ruby и свидетельствует, что вещи, которые трудно сделать в веб-программировании на Java, требуют гораздо меньше кода и сложности для достижения в Рубин. Конечно, есть кривая изучения различных синтаксических и языковых правил, но для прототипирования приложений у него есть преимущества с точки зрения того, сколько кода требуется для достижения желаемого результата. Как уже упоминали другие, масштабируемость также является проблемой, и одна из причин, по которой более зрелые приложения встречаются не так часто на более хип-языках.
источник
Все сводится к затратам и тенденциям. Запуск Web 2.0 создан провидцем до 30 лет, у которого больше таланта, чем денег (конечно, я обобщаю, но это то, что вы увидите «в среднем»). Он собирается использовать язык, с которым он знаком, потому что он занимается программированием (возможно, вместе с несколькими друзьями). Скорее всего, он программист-самоучка.
Java была ориентирована как корпоративная среда (под Java я имею в виду язык, структуру и стандарты). Существует множество дорогих инструментов, которые IBM, Oracle и BEA по всему миру хотят продать предприятиям.
Этапы освоения Java сложны и / или дороги. Я знаю, что ландшафт там меняется, но не слишком ли поздно?
После того, как стартап набирает обороты, наступает рост. Привлекать талантливых разработчиков сложно. Большинство программ «станьте программистом за шесть недель» преподают Java (или .NET), и рынок насыщен «программистами за шесть недель» (как ни странно, я видел разработчиков с резюме, которые рассказывают о 7-летнем опыте, который все еще показывает знание шести недельный программист). Использование не основной корпоративной среды может быть естественным фильтром для шестинедельных программистов. Требуется самоотверженность и личные инвестиции, чтобы выучить Ruby или Scala за пределами требований к работе. Для меня это самый большой показатель потенциала кандидата.
Знания приходят с опытом, но преданный / страстный программист получит знания быстрее (в среднем), чем кто-то без этой преданности / страсти. Так же, как ребенок, который любит играть на гитаре, станет лучше быстрее, чем ребенок, берущий уроки, потому что его сделал его отец.
источник
Ява слишком сложна. Я много работаю с PHP, и в большинстве случаев это просто и быстрее. Возможность просто SSH на сервер открыть файл php внести изменения сохранить и быть сделано, это здорово. Несколько Java-приложений, над которыми я работал, всегда требовали перезапуска для самых простых изменений. (не говоря уже о том, что я всегда делаю). Кроме того, хостинг PHP дешев и доступен.
Я также думаю, что у вас есть, по крайней мере, в PHP множество разработчиков, которые, как и я, начали 14/15 лет назад со статического HTML. По мере продвижения мы начали добавлять PHP на наши сайты, потому что это было легко, просто и доступно. За эти годы язык расширился и расширил свои способности, выходя за рамки скромного начала, и теперь изо всех сил старается быть тем, чем, на мой взгляд, является множество вещей, которых на самом деле нет.
С другой стороны, большинство PHP-разработчиков, которых я знаю, видят в Java гигантскую чересчур сложную 800-фунтовую гориллу, почти как вытащить 18-колесный полуфургон, чтобы доехать до продуктового магазина и получить буханку хлеба.
Я пытался изучать Java, мои первые впечатления, когда он был очень длинным и запутанным, вызывал запястный туннель. Кроме того, с самого начала у меня осталось много вопросов, которые, вероятно, кажутся простыми для ветерана Java. OpenJDK или Sun? Tomcat, или Glassfish, или? Плюс, кажется, каждое введение в книгу по Java запускает написание кода для командной строки. Я думаю, что большинство людей в наши дни находят этот праздник дремотой.
источник
Моя команда и я в настоящее время разрабатываем новое веб-приложение на Java 6 + Stripes. В течение прошлого года я также работал над другим новым веб-приложением, используя Java 6 + Stapler (несколько неизвестный веб-фреймворк, разработанный Kohsuke Kawaguchi из Hudson / Jenkins известности).
Java абсолютно используется для современной веб-разработки. Конечно, у него нет «привлекательной» привлекательности для Ruby или других динамических языков, но я далек от убеждения, что динамические языки - это хорошо, когда проект начинает масштабироваться.
Современные серверы приложений Java очень конкурентоспособны с ASP.NET с точки зрения производительности, и оба на несколько порядков быстрее, чем любой динамический язык, который я знаю.
Не поймите меня неправильно ... Я не говорю, что Java всегда лучший выбор (не удаленно!), Но это не всегда неправильный или «устаревший» выбор.
источник
Новый разработчик, начинающий профессиональную разработку, найдет Java на порядок сложнее, чем rails, python или php, чтобы освоить то, что легко освоить.
Сказав все вышесказанное, я принял решение использовать Java для своего запуска, потому что правильно настроенная среда разработки Java очень продуктивна для работы. Под правильно настроенной я имею в виду.
источник
strpos
илиin_array
? И XML-интерфейс PHP DOM смешной (приводить атрибуты к строкам для их получения?). OSGi абсолютно великолепен и не зависит от языка.Около 5 лет назад мне и коллеге дали задание на программирование для какого-то внутреннего проекта. Достаточно простая задача, требующая парсинга команд.
Я придумал все это в 80 строках Java-кода, и мой коллега занял неделю, около 20 Java-классов и намного больше строк Java-кода, чтобы сделать то же самое. Излишне говорить, что его код был выбран.
Это заставило меня задуматься. Везде сложность ценилась. (Я работал в одной из крупнейших компаний по разработке программных продуктов.) Ява была инструментом выбора, а шаблоны проектирования были ПУТЬ к коду.
Теперь, это мышление или просто высокомерие, которое отвергает простоту. Ну, я всегда думал, что здравый смысл должен преобладать. Будь то корпоративное или простое веб-приложение, основные варианты использования одинаковы. Это должно быть правильно и проверяемо.
Я больше не использую Java по нескольким причинам. Но один из факторов - сложность - это преобладающее мышление среди тонны разработчиков Java, когда дело доходит до разработки программного обеспечения.
Что касается масштабирования динамических языков, JVM является результатом десятилетий исследований. Многое происходит с Руби и т. Д.
Скала - это один язык, который я считаю чрезвычайно умным и практичным. Играть! Scala также отлично подходит для разработки веб-приложений и корпоративных приложений, как и любой другой.
Поскольку Ruby и Rails являются новинкой для начинающих, крайне сложно нанять надежного разработчика Rails. Это на самом деле препятствие для любого запуска, в то время как множество разработчиков Java должно иметь больше делового смысла.
источник
В недавнем интервью с Джозефом Снарром (Joseph Snarr), технический руководитель google plus, объяснил, как приложение использует Java-сервлеты для внутренней части и JavaScript на внешней стороне.
Поэтому, чтобы ответить на ваш вопрос, Java все еще используется для очень современной веб-разработки. Только не для стартапов, которые в последнее время получают столько прессы.
Я думаю, что причина того, что многие стартапы используют другие технологии, заключается в том, что они более сексуальны и имеют более широкую огласку с открытым исходным кодом.
источник
Поскольку вы упомянули о веб-разработке и Java, многие люди склонны забывать, что вначале использование Java-апплетов в веб-браузере не давало хороших результатов, и не только это, но «песочница» для апплетов не была полностью разработана и были проблемы с безопасностью Java-апплеты могут работать в браузере и получать доступ к данным локального компьютера (проблема безопасности на стороне клиента). Конечно, Java хорошо работала с бэкэндом и автономными приложениями, но я думаю, что связывание языка Java с апплетами Java (запущенными в браузере) вместе немного испортило некоторые представления о Java как компоненте веб-разработки. Я не думаю, что они когда-либо оправились от этого.
источник
Вопрос должен быть «Почему Java не используется стартапами или небольшими проектами?». Java, безусловно, используется для «современных веб-приложений». В Google Java используется в качестве бэкэнда для многих сервисов, а JS или GWT, скомпилированный при закрытии, используется для внешнего интерфейса. Проблема - скорость против масштаба. Стартапам нужно добираться до минимально жизнеспособного продукта. Обычно это небольшие команды из 1-3 инженеров, которые ценят скорость итерации за производительность или ремонтопригодность. Решение проблем с масштабируемостью или обслуживанием кода команды - это проблема, «которую вы хотели бы иметь», то есть к тому времени, когда вы достигнете этой стадии, это признак того, что ваша первоначальная реализация помогла вам преодолеть начальный барьер привлечения клиентов или инвестиций. Вы можете позволить себе переписать приложение на этом этапе.
Такая компания, как Google, может позволить себе роскошь создавать вещи для масштабирования заранее, даже если они тратят свое время на внедрение масштабирования для чего-то, что может не получить пользователей, потому что они могут поглотить убытки.
По крайней мере, по моему мнению, многие «крутые», «модные», «современные» компании создают небольшие приложения с небольшими группами, где скорость и простота итерации являются самыми высокими требованиями.
источник
Традиционные веб-приложения на Java, хотя и хорошо структурированные, очень далеки от «быстрого развития». Хотя я когда-либо писал только одно полноценное веб-приложение (Java / Tomcat / Struts), оно было крайне требовательным, отладка заняла больше времени, чем ожидалось, и, как правило, была болезненной при реализации уровня бизнес-логики. Что касается потенциальной защиты Java, то это было единственное веб-приложение, которое я написал на Java (хотя я привык программировать приложения на уровне системы на Java), и я считаю, что во второй раз я мог бы написать другое веб-приложение немного быстрее.
Сказав это, я также написал приложения на PHP и C #, и они просто работают лучше и гораздо более щедры, чем Java. Более того, Ruby on Rails был написан специально для быстрой разработки приложений, которые, как сказал Робби, обеспечивают легкий доступ CRUD к базам данных. Проблема в том, что большинство веб-сайтов, которые вы будете разрабатывать самостоятельно, не нуждаются в уровне настройки, который предлагает Java (и требует от вас выполнения). Кроме того, каждый объект соединения с БД должен быть написан от руки, и его не так просто шаблонизировать. Может быть, существует лучшая среда, особенно та, которая использует преимущества новых функций поддержки динамического языка Java 7 , но я еще не проводил исследования.
источник
Простой ответ: кривая обучения для базовой производительности.
Системы на основе фреймворков, такие как RoR, как правило, вкладывают «магию» в язык / синтаксис. Очень просто увеличить базовый синтаксис RoR и запустить приложение.
Сначала ява была языком, а инструменты и фреймворки появились позже. Итак, вы должны сначала изучить Java, а затем вы должны изучить Spring, Grails, или ваш супер IDE, или что-то еще. Любимый пример Ruby, он не требует сеттеров и геттеров. Факт в том, что Java IDE тоже избавились от ручного кодирования ... но оно все еще в вашем источнике. Преимущество этого подхода заключается в том, что за рамками есть язык, который совместим, с которым могут работать все Java-разработчики.
Это преимущество сомнительно для небольших стартапов, где время имеет существенное значение. Как правило, они делают очень мало, чего не могли сделать с готовой структурой. Таким образом, они могут выбрать свою систему RAD и запустить приложение на следующий день.
Но если вы посмотрите на Facebook и Twitter, когда они расширились, они обнаружили вещи, которые не могут быть обработаны с помощью готовых фреймворков, и поэтому им пришлось использовать технологии более низкого уровня.
Эта священная война, которую имеют разработчики фреймворков за то, что они могут делать все быстрее, ложная, они могут делать многое из того, что им нужно, проще и с меньшими затратами на обучение. И для многих вещей это "достаточно хорошо". Используйте то, что подходит для проблемы.
источник
Зависит от того, как вы определяете «разработку современных веб-приложений». Если вы говорите о стартапах, быстрых веб-сайтах, вам нужно будет рассмотреть языки и платформы, разработанные для этой цели. Если вы ищете стабильную, масштабируемую веб-разработку уровня предприятия, вы ищете языки и платформы, которые поддерживают эти идеалы. В моей книге это две совершенно разные цели. RoR, Groovy и т. Д. Хороши для первого, а Java больше подходит для второго.
источник
Google App Engine поддерживает Java, так что вы можете написать все свое веб-приложение на Java, используя Eclipse в качестве IDE и интерфейса развертывания, с разумно документированным API Google - так что я бы не сказал, что он не используется или не используется. годные к употреблению.
источник
В стартапе, над которым я работаю, мы решили использовать Java и JRuby для реализации нашего API, потому что они дополняют друг друга.
Для инфраструктуры, распределения процессов и коммуникаций мы используем надежность Java, тогда как для фактической реализации конечных точек API мы выбрали JRuby, поскольку все вызовы включают JSON, и имеет гораздо больше смысла манипулировать представлением со свободной типизацией (JSON), используя свободно язык (Ruby).
Если мы видим, что один из наших классов JRuby становится узким местом, мы просто реализуем его непосредственно в Java (в основном, построчное преобразование). Это может случаться довольно часто с классами, которые должны выполнять много вычислений, и в этом контексте JRuby ведет себя во многом как язык прототипирования.
Мы внедрили наш собственный загрузчик динамических классов, который означает, что мы можем изменять классы Java на лету, не перезагружая сервер, и мы были очень довольны выбором. Таким образом, аргумент «вам нужно компилировать и перезапускать каждый раз» не имеет большого значения.
Ключ заключается в том, чтобы избегать всего, что связано с Java EE, - оно громоздкое, громоздкое и антигибкое.
источник
У меня все еще есть чувство, что Java используется во многих веб-разработках. Но обычно речь идет о более ориентированных на бизнес разработках, а не о крупных технологических компаниях, которые, как правило, менее открыты, чем новые стартапы, которые должны получить некоторую поддержку и продвигать свою собственную работу, а также больше заинтересованы в технологиях. , Таким образом, даже если он используется на многих корпоративных веб-сайтах, вы, вероятно, никогда об этом не узнаете, так как им не захочется публично рассказывать о своем технологическом стеке.
Тем не менее, комментируя все оригинальные вопросы ...
Это слабость языка? По сравнению с другими языками, такими как Python или Ruby, Java является многословной и, как правило, требует больше кода для выполнения подобных задач. Но это не только возможности языка, а также окружающее его сообщество и разработчики, использующие эти инструменты. Таким образом, большинство модулей и инструментов на Python, Ruby, PHP и т. Д. Имеют открытый исходный код и их легче найти, чем в мире Java, просто потому, что этот более сфокусирован на предоставлении (и оплате) услуг. Например, сообщество Ruby действительно действительно ориентировано на веб-разработку, поэтому каждый разработчик, который может использовать Ruby, будет знать о проблемах и доступных инструментах для веб-проекта. Это не обязательно верно для разработчиков Java, которые могли бы работать на других типах систем, таких как системы отчетов. Конечно, любой хороший разработчик наверстает упущенное,
Является ли это несправедливым стереотипом Java, потому что он существует так долго (он был несправедливо связан с его старыми технологиями и не получил признания за его "современные" возможности)? Java на самом деле не такая уж старая, и, если честно, она значительно улучшилась. Это была крутая, актуальная платформа около 10 лет назад. Но с тех пор появились новые платформы с новыми проблемами, такие как Ruby on Rails. Основным сектором Java был в основном корпоративный мир с различными проблемами, поэтому люди, ищущие новые проекты за пределами, искали разные инструменты. Кроме того, главное преимущество Java-дизайна, будучи мультиплатформенным, сегодня не так актуально, как это было раньше.
Является ли негативный стереотип разработчиков Java слишком сильным? (Java больше не «крутой»). В этом тоже есть доля правды. Ява по-прежнему является языком для изучения "чтобы получить работу". Так что, если вам все равно, а просто хотите научиться чему-то, чтобы заработать деньги, вы закончите изучать немного Java и больше не будете заботиться об улучшении. Опять же, много о восприятии и видимости. Есть множество замечательных Java-разработчиков, которые пишут код без передачи своих знаний, в то время как многие PHP-разработчики, возможно, не такие хорошие, пишут блоги и сотрудничают с открытым исходным кодом. Это наводит на мысль, что разработчики PHP лучше, чем Java, поскольку у вас есть определенные отзывы о них.
Действительно ли приложения, написанные на других языках, быстрее создаются, легче поддерживаются и работают ли они лучше? Я бы сказал, что их быстрее построить. Принципы языков, таких как PHP, Python или Ruby, делают их весьма полезными для создания программного обеспечения, которое может постоянно меняться. Например, динамическая типизация облегчает изменение интерфейса. В Java важно иметь четко определенный интерфейс, что приводит к более стабильным (и сложным для изменения) интерфейсам. Это очень важно в новом стартапе, главная проблема которого - получить продукт, прежде чем закончатся деньги. Что касается производительности, очень легко неправильно понять потребности и попытаться использовать магические приемы для достижения требуемой производительности, такие как «Java быстрее, чем Ruby. Period» или «MongoDB - это масштабирование в сети».
Используется ли Java только крупными компаниями, которые слишком медленно адаптируются к новому языку? Определенно, имея уже существующую команду Java-разработчиков в компании, упрощает использование одного и того же языка для новых проектов. Это воспринимается как «безопасная ставка», особенно если ядром компании является не технология. Но, в любом случае, Java не используется ТОЛЬКО в больших компаниях, все еще есть много стартапов, которые используют Java для классных вещей (например, FightMyMonster или Swrve широко используют Java), но я бы сказал, что общая тенденция в стартапе сцена должна использовать другие языки. Это также способ привлечь людей, так как большинству людей будет интереснее работать с Ruby, Python или PHP, которые воспринимаются как более «дружелюбные» и «веселые».
источник
Это правда, но не из-за Java и ее экосистемы. Это из-за людей, которые при использовании Java имеют тенденцию создавать большие беспорядки и тяжелые мерзости.
Существует достаточно фреймворков (spring-mvc, grails, play и т. Д.), Которые позволяют быстро создавать вещи. Тот факт, что люди перерабатывают свои системы, является проблемой, которая связана с увеличением знаний, которые люди получают, работая с экосистемой Java, - вы знаете гораздо больше вещей, и у вас есть их в наличии (есть инструменты для всего), и «все выглядит так ноготь".
Если вы «хакерский», вы можете сделать с Java почти то же самое, что и с другими языками, и вот исследование, показывающее, что:
Исследование 49 программистов: статическая система типов не влияла на время разработки ... http://www.cs.washington.edu/education/courses/cse590n/10au/hanenberg-oopsla2010.pdf
источник
Чтобы добавить немного к тому, что уже было сказано, я думаю, что многое из этого связано с тем, насколько быстро вы можете перейти из ничего (буквально) в функциональное веб-приложение.
Если все, что у вас есть сегодня, - это идея, перейти от того, где вы сейчас находитесь, к написанию своего веб-приложения почти так же легко, как и к падению, выбираете ли вы хостинг-провайдера или собственную инфраструктуру (например, образ EC2). Выбор Java, по моему опыту, обычно требует больше работы и часто стоит дороже.
Кроме того, если вы используете Linux и PHP / Python / Ruby, инструменты и платформа бесплатны и предназначены для поддержки друг друга. С Java иногда кажется, что два мира (OS и Java) иногда не работают в гармонии друг с другом.
источник
Кто сказал, что это не так?
Spring MVC + Spring Data JPA или Mongo + Thymeleaf для шаблонизации + плагин coffee-maven-plugin для переноса кофе в JS, и все готово.
источник
Многие могут связывать разработку Java и веб-приложений с ужасами J2EE, которые в сочетании с чудовищными серверами приложений J2EE от крупных синих и красных корпораций равнялись неделям работы до того, как основной «Hello World» был в сети.
Да, последние спецификации и реализации JEE имеют меньший вес, но я все равно трижды подумал, прежде чем предлагать что-то подобное для проекта быстрой разработки с коротким циклом.
Это все еще основанный на стандартах способ разработки веб-приложений на Java. Альтернативы, многие из которых упоминаются в других ответах, передают более смешанную и запутанную картину со слишком большим выбором.
Другие языки изображают одно готовое решение вместо этого множества. Это делает этот выбор более подходящим для целей, когда вам нужно жарить более важную рыбу.
источник
Я думаю, что он используется гораздо чаще, чем вы думаете - использование чуть ниже ватерлинии. Есть много, много рубина на обертках рельсов вокруг толстых, причудливых услуг Java. Особенно, когда вы начинаете иметь дело с чем-либо, приближающимся к большим данным. , ,
источник