Когда Java является хорошим выбором для веб-разработки? [закрыто]

35

Когда Java является хорошим выбором для веб-разработки?

Пожалуйста, не говорите: «Когда у вас есть команда разработчиков, которая знает только Java».

Gulshan
источник
5
Можно спросить, например, какая функция делает Java моим языком веб-разработки?
Абимаран Кугатасан
1
Небольшой недостаток использования Java - отсутствие на рынке фреймворка с доминирующим положением. Ни одна из основанных на Java фреймворков еще не достигла вершины кучи (как это было в тот момент в Struts). Лично я склоняюсь к Spring MVC, если я работаю с приложением Spring или Grails для чего-либо еще (как вы можете вызывать на Java в любое время).
Мартейн Вербург
Внезапно получил 25 баллов за этот вопрос!
Гюльшан
принимаем ли мы во внимание существующее программное обеспечение с открытым исходным кодом?
Джонатан
2
«как у Struts в свое время»: что плохого в использовании сегодня Struts (кроме того, что это уже не модно)?
Джорджио

Ответы:

35

Учитывая множество доступных платформ, зрелость платформы и т. Д., Я испытываю желание сказать «почти всегда». Вот несколько причин, по которым вам не следует использовать Java:

  • как чистый магазин MS, вы, вероятно, предпочитаете делать это .net
  • если вам нужен самый дешевый вебхостер, возможно, вам нужен только PHP
  • если вы хотите сделать это как можно быстрее, Ruby on Rails, Grails или Django, вероятно, лучше подходят для ваших нужд
  • если ваша команда разработчиков знает только XYZ, где XYZ! = Java, вам лучше использовать XYZ
user281377
источник
7
Таким образом, мы используем Java, если мы не являемся магазином MS, намереваемся тратить деньги на хостинг, у нас достаточно времени для разработки с использованием Java и есть Java-разработчики. Это нормально?
Гюльшан
Гульшан: да, вы можете сказать это так
user281377
3
Существует множество других причин, таких как «раздутый», «корпоративный» и «Java» (последнюю можно игнорировать, если вы используете Scala или что-то еще для JVM).
Райнос
1
@Raynos, так что вы рекомендуете вместо этого?
2
@ ThorbjørnRavnAndersen действительно зависит от требований. Если требования являются общими (не относящимися к нише), используйте любую платформу, наиболее удобную для ваших разработчиков и серверов.
Райнос
19

Java является используется в небольших и средних сайтов. Важным моментом является то, что для веб-сайтов Java гораздо меньше бесплатного веб-хостинга, чем, например, для PHP. Это означает, что если у вас недостаточно ресурсов для размещения собственного веб-сервера, вы, вероятно, не выберете Java.

Обратите внимание, что в Java EE 6, особенно в веб-профиле, есть много стандартных технологий, которые могут создавать очень мощные веб-приложения без особого кодирования. К сожалению, это еще не совсем мейнстрим.

Обратите внимание, что в последнее время это несколько изменилось в Google Application Engine, который позволяет бесплатно развертывать стандартные веб-приложения на Java (с некоторыми ограничениями) в облаке для сайтов с низким и средним трафиком.

оборота user1249
источник
Во всех случаях я не буду размещать свой сайт на бесплатном хостинге. Но вопрос есть ли проблема с платным веб-хостингом Java? Это, например, очень дорого?
Гома
1
@ Саид, а не как таковой. Большинство людей просто выбирают самый дешевый вариант и кодируют соответственно.
Например, это дороже, чем другие? Есть ли общий хостинг для Java?
Гома
@Saeed, есть некоторые технические причины, по которым вы не можете сгруппировать столько JVM в одной коробке Linux og Windows, сколько вы можете создавать общие экземпляры LAMP, что неявно означает, что размещенная JVM дороже, чем размещенная LAMP. Google использует другую JVM, что означает, что они могут предложить ее бесплатно.
@ Thorbjörn: У вас есть ссылки о том, как Google это делает? Я слышал, что они используют Jetty, но я не знаю намного больше об их решении.
Джонас
12

Когда ваша платформа - UNIX / Linux, и вам нужен богатый набор инструментов, таких как Object / Relational Mapping, Security, Комплексная оркестровка веб-сервисов и т. Д.
(Мы не говорим о простых сайтах, не так ли?)

Сорантис
источник
1
Вы также можете получить это от языков сценариев - посмотрите на Python и SQLAlchemy. Даже Rails использует ORM (ActiveRecord) и имеет хорошую безопасность.
Брайан Д.
3
Действительно, но я не думаю, что они такие же мощные, как Hibernate, Spring Framework, BPEL.
Sorantis
1
Что не так с Java на не-UNIX / Windows.
Том Хотин - Tackline
2
Ничего такого. Но на Windows у вас есть .NET
Sorantis
2
-1 Вы делаете это звучащим так, будто ни одна из альтернатив не имеет приличных инструментов.
Райнос
9

Каждый раз, когда меня раздражает еще одна Java-команда, я выдуваю пар, глядя на такие вопросы, как этот. Позвольте мне повторить. Я являюсь клиентом на стороне разработчика и работаю уже около 5 лет. Я работал над сайтами, начиная от одноразовых микросайтов, в основном с контентом, и заканчивая такими большими сайтами, как Sears, до более сложных сайтов типа приложений, где требуется действительно глубокая экспертиза пользовательского интерфейса. Я имел дело с Rails, PHP, веб-формами .net (ew), .net MVC (намного лучше) и полным набором Java-решений для веб-разработки, сопровождаемых разработчиками и командами, с которыми пришлось столкнуться. Я также немного пишу на Python и начинаю копать Django.

Мой опыт работы с командами Java всегда был ужасным. Инструменты всегда PITA. Разработчики никогда не хотят верить, что они сделали что-то не так, и заставить их заново исследовать свой собственный газон, как только вы исключили проблему с вашей стороны, все равно что выдернуть зубы. Мой первый опыт общения с командами Java в моем опыте - это время разработки, преобразованное во время электронной почты, с написанием множества длинных объяснений того, почему проблема определенно заканчивается. HTML, как правило, не является их проблемой, если вы на самом деле не хотите его контролировать. Тогда все, скорее всего, обанкротится с их стороны, потому что вы действительно хотите переместить некоторые элементы верхнего уровня вокруг.

В языке есть вещи, которые мне не нравятся, но я думаю, что настоящая проблема - это культура и тот факт, что признание настолько широко распространено, что в середине у вас тонна посредственности. Я подозреваю, что культура исходит из того, как продается Java. Напишите один раз, разверните везде. Перевод: «Нужно учиться только одному!» Люди, которые находят это привлекательным, в основном хотят использовать Java как один гигантский молоток для каждого гвоздя с минимальным оттачиванием своего мастерства в отношении веб-разработки.

Так что если у вас есть разработчики, которые знают Java и другие языки, но все же предпочитают Java, я бы сказал, да, продолжайте, если это кажется правильным решением. Но если у вас есть разработчики Java, которые знают Java, а все остальное просто не соответствует критериям, позволяющим сделать это резюме в их резюме, предложите им создать простое приложение с множеством полусложных страниц в конце HTML и попробуйте это простой тест. Разбей немного HTML. Попробуйте заставить их выяснить, что не так. Если непосредственная проблема, которую они начинают решать, отвлекает их от вины, держите их! @ # $ Подальше от веб-разработки. Веб-разработчик является междисциплинарным и требует активного интереса в этой области, чтобы быть успешным. Это не место для людей, которые хотят иметь только знание одного языка и больше боятся проблем, чем заинтересованы в их решении.

Я не утверждаю, что сама Java - корень некомпетентности, и я слышал, что Spring хорош. Я уверен, что есть компетентные команды Java там. Я просто еще не сталкивался с этим, и я не думаю, что это совпадение. Я думаю, что Sun во многом с этим связана. Я также думаю, что управление веб-командами, такими как или в отделах ИТ, во многом связано с этим.

Эрик Реппен
источник
1
У меня есть те же проблемы, которые вы описываете, но никогда не думал, что это может зависеть от языка программирования. Вы думаете, что люди, которые программируют, скажем, на PHP, более открыты и гибки?
Виталий Олегович
PHP на 100% о разработчике и меньше о культуре, окружающей его. Мне не нравится отсутствие согласованности в ядре, но я бы доверял работе команды PHP среднего уровня для веб-разработки таким образом, чтобы не доверять команде Java. Помогает то, что опытный разработчик PHP вряд ли работал с чем-либо, кроме Интернета, и он / она, вероятно, был нанят для получения опыта по степеням / полномочиям. Проблема Java может быть отчасти связана с жесткостью, присущей языку, но я, честно говоря, думаю, что это больше связано с характером обучения разработчиков Java, внедрением решений Java и наймом разработчиков Java.
Эрик Реппен
1
@ Эрик Реппен: Я думаю, что вы чрезмерно обобщаете свой опыт: я не думаю, что команды Java хуже команд, работающих на других языках, или, по крайней мере, не хуже, чем в среднем. Я знаю два очень хороших магазина, которые интенсивно работают с Java. Первый, делает проекты на Java и в Ruby (около 50% каждый). Второй работает в основном на Java, но делал отдельные проекты в Scala и Common Lisp.
Джорджио
@Giorgio Я пропустил это, но я работал с другими людьми, работающими с бэкэндом через .NET, Rails, Java и PHP. Я не считаю, что одноразовый опыт работы с другими языками и дерьмовыми разработчиками, безусловно, не уникален для Java. Кроме того, как я сказал, я на 100% уверен, что есть очень компетентные команды Java. Кто-то должен не сосать это, но IMO, я не переизбыток. Существует проблема с разработчиками Java на среднем уровне. Это культурный феномен в моем опыте. Такой неприятный, что я перестал работать с магазинами Java, если не знаю, о каких разработчиках идет речь.
Эрик Реппен
5

Java отлично подходит для небольших веб-сайтов. Вы можете очень быстро заставить JSP-страницы работать на веб-сервере Java, таком как Tomcat , например.

Хотя, по моему опыту, Java более распространена для больших веб-сайтов, где существует большая потребность в сложной обработке на стороне сервера - в этом случае вы найдете более сложные платформы Java, такие как JavaServer Faces (JSF).

Важно отметить, что полная установка Java исторически не была доступна во многих дешевых установках веб-хостинга, поэтому это может объяснить преобладание других языков, таких как PHP, в этих средах.

mikera
источник
Это значит, что хостинг Java-приложений слишком дорог? или это не так дешево, как, например, PHP? Можете ли вы дать мне хорошую ссылку на хост для Java, чтобы я мог видеть цены? Я выполнил поиск, но я не знаю, какие из них имеют стандартные цены, поэтому я могу получить общую картину об этом.
Гома
1
хостинг веб-приложений Java не дорогой, вам просто нужен хостинг-провайдер, который позволяет запускать Java-приложения. Подойдет любая хостинговая среда Linux, в которой вы получите учетную запись для входа в систему. Я лично использую Ubuntu в Amazon Web Services для своего хостинга Java.
Микера
2

Основные причины использования Java в веб-разработке сводятся к следующему:

  • Клиент требует этого. Что бы там ни было, у некоторых клиентов есть «принятые технологические списки», и если вы предлагаете что-то, чего нет в этом списке, вам лучше дать действительно хорошее объяснение, почему - и почему что-то из списка не может использоваться.
  • Разработка на Windows, развертывание на Unix. Большинство машин для разработки - Windows, некоторые - Mac, и очень немногие - Linux - как и следовало ожидать от обычных клиентских машин. Однако на сервере вы, скорее всего, увидите ту или иную форму Unix, как сервер Windows. Java, вероятно, наиболее близка к написанию после развертывания в любом месте (она не идеальна, но лучше, чем некоторые альтернативы).
  • Выбор управления. Посмотрим правде в глаза, выбор Java над другим языком будет в большей степени связан со способностью находить программистов и заменять членов команды, которые покидают проект, чем основываться исключительно на достоинствах языка.
Берин Лорич
источник
О # 2: пожалуйста, настройте вашу IDE правильно. Eclipse имеет эту глупую идею по умолчанию использовать некоторую кодировку Windowish, которая может привести к хаосу на сервере Linux.
Eldelshell
На самом деле я имел в виду предположения о том, где находятся определенные файлы и когда вам приходится взаимодействовать с операционной системой.
Берин Лорич
«Вероятно, C наиболее близок к написанию после развертывания в любом месте». Я исправил это для вас.
Райнос
@Raynos, если бы это было правдой. К сожалению, если у вас нет одинаковых стандартных библиотек на всех платформах, это невозможно. Ядро языка C очень переносимо, я вам это даю. Однако все, что зависит от ОС (например, создание потока, открытие сокета или создание элемента пользовательского интерфейса), имеет в API что-то, что нельзя перенести с помощью простой перекомпиляции. В Java перекомпиляция не требуется, и тем более не нужно менять код для использования нового системного API.
Берин Лорич
@BerinLoritsch Вы хотите сказать, что после 40 лет у нас нет универсальных API-интерфейсов для специфических для ОС вещей, которые просто работают кроссплатформенно с простой повторной компиляцией? Я могу представить, что это правда в 80-х годах.
Райнос
2

Технически говоря:

  • Если вы можете определить архитектуру, которая подходит оптимизатору горячих точек.
  • Если вы предвидите необходимость в огромных OO-издержках, навязывает Java.

Если бы я запускал веб-приложение, я бы использовал Ruby on Rails и проектировал бы таким образом, чтобы точки доступа могли быть заменены, когда RoR достигнет предела масштабирования производительности.

Java обладает определенным запахом COBOL, и «низкоуровневые кодеры используют Java» висят на ней, а фиаско Oracle не помогают репутации. Если у вас есть выбор , выберите язык, который привлекает лучших разработчиков.

Пол Натан
источник
«Выберите язык, который привлекает лучших разработчиков». Пример?
Eldelshell
1
@Ubersoldat: Go, Ruby, Clojure, Haskell, Python - все языки, которые делают это.
Пол Натан
Python хорош, потому что на самом деле он преуспевает во многих вещах, к которым притворяется Java. И нетрудно заставить его играть хорошо с другими, когда нужно решить проблему с другим языком. Я не знаю насчет Ruby, но в моем опыте разработчики Rails - что-то вроде кряка. Это эффект JQuery. Людям, которые знают, что они делают, нравится это, потому что это быстро и эффективно в правильных руках. Людям, которые не знают, что они делают, нравится это, потому что они не должны знать так много.
Эрик Реппен
@Erik Reppen: С другой стороны, Ruby как язык имеет более приятный и согласованный дизайн, чем Python. Я действительно думаю, что сравнение этих языков часто является делом вкуса, и каждый предпочитает языки, с которыми они более знакомы.
Джорджио
0

Все просто: используйте Java, когда основная задача - производительность сервера. При кодировании возникают дополнительные издержки, но код будет выполняться буквально за период от 1/200 до 1/500. Php, Ruby и другие динамически типизированные языки всегда будут работать намного медленнее, чем серверы Java или .net.

Большинству решений для Интернета это не нужно. Например, Twitter не отказывался от Rails, пока не начал набирать популярность.

Риан Фаулер
источник
-1

Не единственная причина, но с растущей популярностью создания веб-сайтов со сложными приложениями, похожими на приложения, при этом с логикой, выполняющей «вещи» на сервере - нет необходимости объяснять, почему Java по крайней мере равна любой другой вариант на стороне сервера. Но на стороне клиента, если любой javascript собирается быстро превратиться в кошмар обслуживания кода, и, используя GWT, чтобы держать это на расстоянии вытянутой руки, чтобы вы могли кодировать на Java, вы можете получить лучшее из обоих миров с вашим сервером выполняет тяжелую работу и клиентский процессор дает им «опыт». Научитесь интегрировать его с чем-то вроде jQuery, и вы сможете получить все, что вам захочется.

Не какой-либо эксперт по альтернативам, но если кто-то другой может предложить такого же рода гибкость и широту, рад услышать об этом.

nomaderWhat
источник
+1 для JQuery :)
Авель
2
-1 для «javascript превращается в кошмар обслуживания кода», это всего лишь побочный эффект, позволяющий разработчикам Java писать javascript без какого-либо обучения или изучения JavaScript. и основным недостатком GWT является то, что это утечка абстракции, удачи в том, что он хорошо работает на мобильных устройствах.
Райнос
Проблема с жесткостью Java, IMO, заключается в том, что у вас много разработчиков, которые не понимают, почему их код организован так, как он есть. Когда все должно выглядеть как ООП, иногда неизбежным результатом является то, что на самом деле ничего нет.
Эрик Реппен
-1

Основная причина, по которой я бы выбрал java, заключается в том, что вам нужно использовать распределенные транзакции, что может быть большой проблемой для многих корпораций. Однако вы все равно можете использовать ваш любимый язык сценариев для веб-разработки и делегировать работу только Java, когда вам нужны быстрые / распределенные транзакции.

Брайан Д.
источник
-1

Я полагаю, что это произойдет, когда ваше приложение будет очень сложным, так как его будут разрабатывать многие люди, со множеством сложных модулей, сложной бизнес-логикой, и оно должно взаимодействовать со многими другими корпоративными приложениями.

В любом случае, вы также можете разрабатывать в Grails, который предоставляет множество приятных функций, значительно облегчает разработку и быстро развивается.

Eldelshell
источник
-1

Java в порядке, но если производительность не является критически важной, вы можете получить те же результаты с меньшими усилиями на других языках.

Кевин Клайн
источник
2
«производительность не принципиально важна», когда вы пишете на C, а сборка не на Java.
Райнос
Тесты и опыт, Java-сайты были худшими в моем опыте работы на стороне клиента. Это может быть проблема среднего уровня таланта больше, чем языковая вещь, хотя.
Эрик Реппен
2
@ErikReppen: Определенно талант. Скорость Java на сервере уступает только C / C ++. PHP или Rails просто не могут сравниться. Но библиотеки Java и некоторые инструменты позволяют слишком легко потерять всю эту скорость, делая бесполезно сложные вещи.
Zan Lynx
-1

Java является языком со статической типизацией и дешевле, чем другие языки со статической типизацией, используемые для веб-разработки, а именно C # и VB.net, если у вашей компании нет подписки MSDN. Статически типизированные языки хороши для средних и больших проектов, сложных правил домена и большого количества внутреннего кода, потому что вы можете лучше организовать свои классы, а IDE помогут вам найти ошибки в вашем коде.

С динамически типизированными языками, такими как PHP, Python, Ruby, ваша разработка будет намного быстрее, но вам придется намного лучше тестировать свой код. Если у вас мало времени и денег и ваши требования меняются очень быстро, и вам не нужно выполнять очень сложные вычисления, динамические языки намного лучше.

Виталий Олегович
источник
-2

Безопасность

Основная причина, по которой крупные компании предпочитают Java другим решениям, заключается в том, что он считается гораздо более безопасным.

Это в основном потому, что его поддерживает такая крупная компания (сейчас это оракул).

Следует принять во внимание, что Java предлагает очень высокий уровень безопасности и отличную поддержку и анализ (хотя это и имеет свою цену).

mrwooster
источник
7
Э-э-э ... а безопасность волшебным образом исходит от самого языка или как?
MCHL
1
Вы знаете, что Oracle НЕ является единственным поставщиком контейнеров сервлетов Java, не так ли?
Мчл
6
Священная война! Бой Бой!
Авель
2
@Mchl Некоторые из них происходят от языка или, скорее, от его виртуальной машины. Сколько раз вы видели взломы переполнения буфера, направленные на серверы приложений Java? Это просто не стоит усилий. Тем не менее, «индустрия» считает, что Java более безопасна, чем ложная, и ложное чувство безопасности может сильно отразиться.
biziclop
1
Суть в том, что вам нужно провести различие между Java как языком и средой исполнения Java. Нет ничего, что делает язык Java более или менее безопасным, чем любой другой язык. С другой стороны, JVM предназначены для выполнения байт-кода Java в «песочнице», но их безопасность зависит от конкретной реализации. Хорошая точка зрения на ложное чувство безопасности, хотя.
Мчл