Почему Java не используется для разработки современных веб-приложений? [закрыто]

Как профессиональный Java-программист, я пытался понять - почему ненависть к Java для современных веб-приложений?

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

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

В результате я потратил время на то, чтобы забрать Ruby /Rails, в основном, чтобы узнать, что мне не хватает. Но я не могу не подумать про себя: «Я мог бы сделать это намного быстрее, если бы использовал Java», в первую очередь из-за моих относительных уровней опыта.

Но также потому, что я не видел ничего критического «отсутствующего» на Java, не позволяя мне создавать одно и то же приложение.

Что подводит меня к моему вопросу (-ям) :

Почему Java не используется в современных веб-приложениях?

  • Это слабость языка?

  • Является ли это несправедливым стереотипом Java, потому что он был так долго (он был несправедливо связан со своими более старыми технологиями и не получил признания за его «современные» возможности)?

  • Является ли негативный стереотип Java-разработчиков слишком сильным? (Java больше не «круто»)

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

  • Является ли Java только крупными компаниями, которые слишком медленно адаптируются к новому языку?

394 голоса | спросил 2 revs, 2 users 100%
Cliff
1 Jam1000000amThu, 01 Jan 1970 03:00:00 +030070 1970, 03:00:00

30 ответов


174

Современные начинающие компании должны как можно скорее выйти на рынок. Им не нужно тратить около шести месяцев, чтобы выпустить свое веб-приложение Java.

Twitter, например, был создан с использованием Rails /Ruby, но как только он стал нескромным, они перенесли на JVM.

Не говоря уже о том, что процесс разработки не является продуктивным: code -> compile -> развертывать, пока он находится в таких рамках (Rails /Django /Grails): запустить тестовый сервер -> code -> изменить вещи и посмотреть, что произойдет.

Хорошей новостью является то, что JRebel позволяет мгновенно увидеть изменения кода.

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
136

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

Я обычно видел, что Java намного лучше работает в гораздо более крупных веб-приложениях (подумайте о банках и страховых компаниях), которые общаются с рядом других систем (таких как back-end мэйнфреймов и базы данных и системы пакетной обработки веб-сервисов одноранговых веб-сервисов ... все в одном приложении).

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

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
135

Я запрограммировал java-приложения в течение 10 лет, прежде чем переключился на python, еще 4 года назад. Я чувствую, что я намного более продуктивен с помощью python и могу сделать намного больше в течение более короткого периода времени, и, честно говоря, я намного счастливее, когда я развиваюсь в python. Вот некоторые из причин, почему я считаю, что python лучше, чем Java, основанный на моем личном опыте, ваше облегчение может очень сильно.

Веб-рамки:

Когда я впервые начал программировать веб-приложения на Java, Struts только что вышел, и это было не очень хорошо, но это было лучшее, что доступно. Я создал множество приложений для расположений и несколько других способов. Всякий раз, когда выходили новые рамки (Tapestry, Wicket, GWT, stripe, grails, AppFuse, Play, RichFaces, Spring и т. Д.), Я бы попробовал и посмотрел, было ли это лучше, и в большинстве случаев это было немного лучше , а иногда и не лучше. Я должен сказать, что игровая платформа - это шаг в правильном направлении.

Батареи не включены:

Одной из самых раздражающих частей Java был тот факт, что большинство используемых вами библиотек не были включены в java, вам пришлось включить тонну сторонних библиотек из таких мест, как apache commons. Если вы используете что-то вроде спящего режима с какой-либо другой большой библиотекой, вы попадаете в адский аджар Jar, где hibernate нуждается в одной версии jar, а что-то еще нуждается в другой версии. Если вы загружаете файлы jar в неправильном порядке, вам не повезло. Вам нужно зависеть от таких инструментов, как maven и плющ, чтобы управлять вашими зависимостями, и это просто приводит к большему количеству зависимостей в вашем проекте, что приводит к огромным проектам. У меня были военные файлы размером 100 МБ + военные файлы для простейших веб-приложений.

Слишком много опций:

По какой-то причине, похоже, слишком много разных способов сделать то же самое в Java. Существует более 38 различных веб-фреймворков для java в соответствии с wikipedia ( 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 ), чтобы назвать несколько примеров. Если вы посмотрите на другие языки, у них будет более разумное число. Некоторые люди считают, что иметь много вариантов - это хорошо, но это не приводит к большому количеству потраченных впустую усилий в сообществе разработчиков, каждый изобретает одно и то же колесо, и если вы новый человек на языке, который у вас есть слишком много вариантов для выбора.

Серверы приложений:

Веб-приложения Java действительно тяжелы и требуют много ресурсов для запуска. Они особенно голодны в памяти. Как и любое программное обеспечение, они могут быть настроены таким образом, чтобы уменьшить их ресурсную площадь, но по сравнению с другими языками их настройки из коробки ужасны. В прошлом я использовал weblogic, websphere, Jboss, tomcat и причал. Я использовал только первые три, когда мне пришлось использовать 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 больше, потому что, если я испортил что-то, требуется больше времени для перекомпиляции и перераспределения, что замедляет меня.

ОРМ:

Когда я впервые начал использовать Hibernate в качестве ORM, я подумал, что это здорово, у него были проблемы, и это было не идеально, но было лучше, чем то, что я делал раньше. Я был доволен этим, пока не сделал приложение с ORM Django в проекте python, и это открыло мне глаза, так как ORM должен работать. После этого проекта я вернулся в спящий режим, и я просто почувствовал разочарование и очень хотел вернуться к ORM Django. Еще один большой ORM python - sqlalchemy, который похож на ORM Django, но немного отличается. У меня ограниченный опыт работы с ORM ROR, но из того, что я помню, это было очень хорошо.

Шаблоны:

Системы веб-шаблонов в Java не так уж хороши, и я думаю, что я пробовал их все (плитки, freemarker, скорость и т. д.). Большинство из них предлагают только базовые функции и являются болью для работы. На стороне Python мои два фаворита - это шаблоны Django и Jinja2, у них есть все, что мне может понадобиться в шаблоне, и они очень просты в использовании.

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
94

Start Ups хочет блестящего. Какой бы ни был блеск: RoR, Groovy, Grails, OOP с PHP, Foobar, Wibble, Narf и т. Д.

Предприятие хочет стабильной, надежной и масштабируемой: Java и .NET подходят к этому счету (когда все сделано правильно).

Текущий концерт: Финансовые услуги. Платформа: ColdFusion (по существу, библиотека тегов Java) и Java.

Предыдущие концерты:

  1. Услуги по тестированию образования - ColdFusion
  2. Страхование высокого риска - ColdFusion и Java
  3. 401k - ColdFusion и Java
  4. Путешествие - Java с внутренними приложениями ColdFusion.
  5. Ценные бумаги - ColdFusion (версия до Java)

Это все высокопроизводительные сайты с высокой степенью защиты. Никто из этих компаний никогда не рассматривал PHP, некоторые смотрели на RoR и видели слишком много проблем. У компании 401k была дочерняя компания, работающая с .NET-приложением с компетентными разработчиками, приложение просто продолжало сбой каждую неделю. Они, наконец, превратили его в Java и получили стабильность.

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

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
73

В дополнение к РазочарованныйWithFormsDesigner's Ответ: Поскольку я предполагаю, что ваш вопрос больше нацелен на более мелкие сайты, есть важный аспект, который вам нужно учитывать для большого количества людей: Хостинг вездесущ для PHP, но его сложнее для Java или ASP-сайты. Это, однако, не является дефектом этих языков.

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
70

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

Если вас интересуют современные, производительные инструменты и рамки, посмотрите:

Но я думаю, что самая по-настоящему современная веб-разработка на платформе JVM, вероятно, будет выполнена на одном из новых языков JVM , а не непосредственно на Java, а Java просто предоставит основу в терминах базового библиотек и внутренней инфраструктуры. В Groovy существует много веб-разработок ( Grails ), Scala ( Поднять и Играть ), JRuby ( JRuby on Rails ) и Clojure ( Noir , Ring /Enlive + множество пользовательских фреймворков), чтобы назвать несколько .

Со всеми инновациями, происходящими в новом пространстве JVM, я лично подозреваю, что Java в конечном итоге станет «ассемблером программирования на стороне сервера».

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
41

Являются ли Google, Amazon или LinkedIn современными?

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

Тем не менее, Java прошел через период, когда стандарты веб-разработки пытались быть всем для всех (возможно, все еще существуют). «Не повторяйте себя» - это ответ на xml ад и длинные циклы построения веб-разработки Java. В результате Java (EJB, Struts, JSF и т. Д.) Стали восприниматься как вещь, которую все новые парадигмы пытались преодолеть.

Java, язык является подробным. Это pro и con (отлично подходит для обслуживания, отстой для dev). Существует ряд современных языковых функций, которые еще не попали в Java, которые существенно сокращают время кодирования (свойства, события, блокировки, генераторы, понимание списка и т. Д.). Таким образом, это может быть неприятно, если перейти с более современного языка. Тем не менее, их трудно добавить на зрелый язык, не становясь гнездом крыс, который становится C #.

Многие языки, используемые в современной веб-разработке, динамически типизируются. Это позволяет инструментам, которые могут динамически перезагружать код, как написано (этого сложнее выполнить на статическом языке - jrebel). Поскольку веб-разработка поддается быстрым итерациям, динамическая перезагрузка является огромной победой. Это значительно сокращает цикл разработки проектов на основе новых проектов и упрощает получение UI и UX права (проб и ошибок по своей природе).

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

Кроме того, по мере того, как количество разработчиков /оборот возрастает, и продукты созревают, вероятность того, что люди, имеющие благие намерения, вводят ошибки, стремительно растут. Строгость и дисциплина, которые хорошо продуманный Java-проект (интерфейсы, шаблоны и священная вода для тех, кто вампиры php :)), помогают снизить долгосрочный риск. Хотя это также может быть достигнуто посредством модульного тестирования, система безопасности, полученная из статической проверки (и статические анализаторы, такие как findbugs и clang), обеспечивает встроенный уровень покрытия кода, который трудно реплицировать с помощью рукописных тестов. Не поймите меня неправильно, должны быть модульные тесты и функциональные тесты, но реальные организации никогда не достигнут 100% -ного охвата. Для того, что они проверяют, делают статические анализаторы.

Таким образом, в больших проектах (как определено больше размером команды, чем размер кода), когда существует сложная взаимосвязь между независимо разработанными фрагментами кода, языки, подобные Java, по-прежнему предпочтительны. Примеры включают крупные /сложные веб-приложения, такие как крупные финансовые агенты (ameritrade), финансовые обмены (nasdaq, nyse, возможно, лондон после отказа .net), онлайн-банкинг (почти все), электронная почта (google), аукцион (ebay) и т. д.

С точки зрения производительности и масштаба ничто не сравнивает платформу Java с комбинацией масштабируемости и производительности для веб-приложений (в зависимости от того, как вы учитываете разбиение приложений facebook). Например, Twitterу пришлось переписать большую часть своей инфраструктуры Ruby в Scala на виртуальной машине Java, чтобы вывести неработающего кита обратно в море. Я слышал о других больших примерах, но сейчас они ускользают от меня.

Также стоит подумать о безопасности. Хотя плагины браузера Java понесли свою долю уязвимостей в системе безопасности, сама платформа java является одной из наиболее безопасных платформ. Веб-приложения Java имеют репутацию очень надежной. Методы кодирования, библиотеки и архитектура It's давно обескураживают ошибки, которые делают атаки, такие как SQL-инъекция или переполнение буфера. В то время как другие веб-платформы (рельсы) имеют хорошую репутацию в области безопасности, ни одна из них не превосходит Java.

В нижней строке, большинство веб-приложений просты технически. Для простоты Java часто переполняется (как и в старые времена, когда мы писали их в C :)). Если, однако, webapp является сложным (backend или иначе) или, как ожидается, будет иметь более 100 разработчиков, Java трудно превзойти.

-

В личной заметке я часто использую Grails, потому что это дает мне лучшее из обоих миров (то же самое можно сказать о JRuby, который, как я слышал, становится все более популярным в мире Ruby).

BTW - Я считаю, что PHP становится действительно непонятным. PHP как язык является грубым эквивалентом perl в удобочитаемости и VB в качестве результатов. Он поощряет ужасные практики, практически невозможно поддерживать, сторонние библиотеки редко работают так, как ожидалось, и у него есть синтаксис, который заставил бы Ларри Уолл подняться ... ну ... стена. Единственное объяснение, которое я могу вызвать, заключается в том, что он поддается постепенному обучению (например, VB). Другими словами, вы можете сделать что-то полезное, зная очень мало о программировании /администрировании, и вы можете расширить свои знания небольшим куском за раз. С точки зрения усыновления можно многое сказать.Тем не менее, для тех, кто каждый из них должен был поддержать или заменить один из миллиардов приложений VB, которые были написаны «программистами» в мире корпораций /mfg, вы, вероятно, качаете головой и планируете свой выход на пенсию. :)

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
38

Хорошо, я недавно встретился с Java-парнем, который был действительно взволнован новым проектом Spring Data, из-за того, как мало кода требуется для получения базового доступа CRUD к вашей базе данных.

Я могу создать CRUD приложение , используя Rails (а не только доступ к db, но просмотры и контроллеры) с несколькими командами.

(Сверху моей головы: новый проект, 1 команда scaffold для каждого объекта, 1 команда для переноса базы данных, 1 команда для запуска сервера.)

Это не имеет никакого отношения к языку, все дело в инструментах. И кажется, что динамические языки имеют, как правило, инструменты и рамки, которые удаляют много шаблонов. (Чтобы восполнить нехватку мощных IDE, которые генерируют для нас шаблонный шаблон.)

Также я считаю, что динамические языки, как правило, делают такие инструменты и рамки намного проще. Я могу проверить код, например, Padrino или Rails (ruby web frameworks) намного легче, чем я могу проверить код, например, Spring Roo. Это может быть связано с тем, что я знаю Ruby намного лучше, чем я знаю Java.

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
24

В последние годы Java позиционируется как «предприятие». Что находится на другой стороне спектра того, что нужно для запуска. В разработке веб-приложений вам нужно 4 вещи - безболезненный доступ к базе данных, отличная манипуляция строк, синтаксический сахар и быстрый итеративный процесс, чтобы сделать множество небольших изменений, которые требуется вашему приложению.

Производительность, масштабируемость и стабильность немного ниже в списке приоритетов.

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

Итак, я полагаю, что это причины, по которым webstartups избегают java.

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
18

В настоящее время я работаю в компании, у которой есть немало «Я ненавижу Java» разработчиков. Раньше меня тоже оглушали. Я, конечно, ненавижу все клады технологий, которые доступны с Java. Это затрудняет принятие решений. Это похоже на то, когда у вас слишком много выбора, у вас нет выбора. Вы должны провести время со 100-ю системами, чтобы действительно придумать структуру, которая работает для вас. Стандартная архитектура Servelt является сложной для большинства приложений. Это не относится к Ruby, Django и тому подобному. Они больше представляют собой единую структуру, а не язык.

Самые большие жалобы, которые я слышу от разработчиков

  1. Синтаксис слишком длинный. Чтобы напечатать что-то, мы должны написать System.out.print. Вы не можете использовать простой редактор, похожий на VI, и за считанные часы выписывать рабочий фрагмент кода.
  2. Слабые тестовые рамки. Несмотря на то, что структуры тестирования очень похожи в Java и Ruby, Ruby делает шаг вперед, делая вещи легко доступными для тестирования. Это особенно актуально, если вы широко используете БД в своем приложении. Даже многие веб-фреймворки не думают о тестировании.
  3. Шаблоны - это боль. Делает относительно простой язык в суп с лапшой.
  4. Не круто. Большинство приложений Java написаны в огромных компаниях, что связано с бюрократией, которая не так хорошо работает с разработчиками. Люди не считают Google, когда они думают о Java. Google == Python. Он также должен делать много, не выходя из книг, указывающих на то, что X в Y дней.
  5. Не нравится компилировать. Для большинства разработчиков компиляция - явление десятилетнее. Это имело смысл в 80-х с C, но более сложные компьютеры могут делать намного больше. Они не записывают код на скомпилированных языках. Java является одним из немногих языков, скомпилированных и используемых для написания веб-приложений.
  6. Слишком много концепций Oops. Хотя разработчики спокойно приняли домен Oops. Им это не нравится. Им не нравится, когда вы пишете приложение с 10 классами, и каждый класс делает только одно. Позволяет открывать 100 файлов и представлять взаимодействие между 100 классами, иногда с фреймворками. Делает всю работу по программированию сложной задачей. Это может быть верно для большинства языков, но я видел, что разработчики Java уделяют большое внимание тому, что делает класс. Его разработчики Java, которые часто придумывают код со 100 классами. Это хорошо со многих точек зрения, но разработчики не-java ненавидят его.

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

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
14

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

Раньше я работал в компании, которая создавала Spring /Java, и в лучшем случае я нашел структуру громоздкой. У меня нет много приятных вещей, чтобы сказать о структуре Весны, за исключением того, что у меня был друг, который занимался разработкой Struts, и он думал, что Струтс еще хуже. Веб-инфраструктура не имеет ничего общего с настольными приложениями или мобильными приложениями (например: android) и имеет очень много абстрактных идей, которые требуют времени, чтобы действительно понять (хотя, безусловно, это дает вам много возможностей и возможностей, если вы «профессионал и делающий что-то действительно сложное, как приложение уровня предприятия»). Мне нравится программировать java для мобильных или настольных устройств, но java для веб-приложений? Не так много.

Я не программировал лично в Ruby /Rails, но мой друг, который раньше делал Struts, теперь занимается веб-программированием Ruby и свидетельствует о том, что для веб-программирования Java требуется очень много кода и сложности для достижения в Ruby. Конечно, есть кривая обучения различным синтаксическим и языковым правилам, но для прототипирования приложений у нее есть преимущества с точки зрения того, сколько кода требуется для достижения желаемого результата. Как отмечали другие, масштабируемость также является проблемой для рассмотрения, и одна из причин, по которой более зрелые приложения не часто встречаются на более бедных языках.

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
14

Это сводится к издержкам и тенденциям. Запуск Web 2.0 создается менее чем 30 провидцами, у которых больше талантов, чем денег (я, конечно, обобщаю, но это то, что вы увидите в среднем »). Он будет использовать язык, с которым он знаком, потому что он занимается программированием (вместе с несколькими друзьями). Он, скорее всего, является самонаводящимся программистом.

Java была ориентирована как корпоративная среда (Java, я имею в виду язык, структуру и стандарты). Есть куча дорогостоящих инструментов, которые IBM, Oracles и BEA в мире хотят продавать предприятиям.

Шаги по освоению Java сложны и /или дороги. Я знаю, что пейзаж меняется там, но слишком ли слишком поздно?

После того, как на старте набирает силу, наступает рост. Рекрутировать талантливых разработчиков сложно. Большинство из них стали программистами в течение шести недель, в которых участвуют Java (или .NET), и рынок насыщен «шестью недельными программистами» (как ни странно, я видел разработчиков с резюме, говорящим о 7-летнем опыте, который все еще показывает знание шести недельный программист). Использование среды, не относящейся к «не предпринимательству», может быть естественным фильтром для шестинедельных программистов. Требуется самоотверженность и личные инвестиции, чтобы изучить Ruby или Scala вне требований к работе. Это самый большой показатель для меня потенциал для кандидата.

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

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
14

Java слишком сложна. Я занимаюсь тонкой работой PHP, и в большинстве случаев это проще и быстрее. Возможность просто SSH на сервере открыть php-файл, внести изменения, сохранить и сделать отлично. Несколько приложений Java, над которыми я работал, всегда требовали перезагрузки для самых простых изменений. (не говоря, что это всегда так, как я делил). Кроме того, хостинг PHP дешево и доступно.

Я также думаю, что у вас есть хотя бы с PHP много разработчиков, которые, как я, начали 14/15 лет назад со статическим HTML. По мере продвижения мы начали добавлять PHP на наши сайты, потому что это было легко, просто и доступно. На протяжении многих лет язык вырос и расширил свои способности за пределы его скромных начал и теперь пытается быть тем, что, по моему мнению, очень много, на самом деле это не так.

С другой стороны, большинство PHP-разработчиков, которых я знаю, видят Java в качестве этой гигантской чересчур сложной горилла 800lb, почти как выход из 18-футового полуприцепа, чтобы сесть в продуктовый магазин и получить буханку хлеба.

Я попытался изучить Java, мои первые впечатления, когда это было очень длинное извилистое и вызванное кистевой туннель. Кроме того, начиная с него, мне оставалось много вопросов, которые, вероятно, кажутся легкими для ветерана Java. OpenJDK или Sun? Tomcat, или Glassfish, или? Плюс, кажется, что каждое введение в книгу Java запускает вы написание кода для командной строки. Я думаю, что большинство людей в эти дни находят, что откладывают праздник.

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
12

Моя команда и я в настоящее время разрабатываем новое веб-приложение в Java 6 + Stripes. В течение прошлого года я также работал над другим веб-приложением, использующим Java 6 + Stapler (несколько неизвестная веб-инфраструктура, разработанная Кохсуке Кавагути из славы Хадсона /Дженкинса).

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

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

Не поймите меня неправильно ... Я не говорю, что Java всегда лучший выбор (не удаленно!) - но он не является всегда неправильный или «устаревший» выбор.

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
12
  1. Java более сложна для изучения, чем PHP /Python /Ruby.
  2. Java-экосистема очень сложная, очень большая и довольно запутанная для начинающих.
  3. Есть много исторически плохих фреймворков с отрицательной репутацией, связанных с java, вам нужно знать, какие фреймворки избегают тратить время на
  4. Инструменты сборки Java - это сложный способ (maven & ant) ​​
  5. Java не имеет системных систем, которые просты в использовании (OSGI слишком сложна)
  6. Java IDE, такой как Eclipse, но очень мощный с удивительными функциями, трудно настроить для эффективной веб-разработки без большого опыта.
  7. Если вы используете что-то другое, кроме Tomcat или Jetty, как сервер, то вас разочаруют длительные времена запуска WebSphere /WebLogic /JBOSS
  8. Java EE решает проблемы, которые многие люди не имеют, например, распределенные транзакции.

Новый разработчик, попадающий в профессиональную разработку, найдет Java Order of Magnitude сложнее, чем рельсы, python или php, чтобы начать работу, поэтому они идут с тем, что легко узнать.

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

  1. Время запуска менее 10 секунд
  2. Правильно настроенное рабочее пространство eclipse, при этом все фреймворки перепутали и настроили
  3. Хороший выбор библиотек (Spring, Spring MVC, Spring Social, Spring Security, JPA, Hibernate, Velocity, .... и т. д.)
  4. Быстрые машины для разработчиков с твердотельными накопителями
  5. подписка Orielly Safari
ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
12

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

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

Это заставило меня задуматься. Повсюду была оценена сложность. (Я работал в одной из крупнейших компаний, выпускающих программные продукты.) Java был инструментом выбора, а шаблоны проектирования были способом кодирования.

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

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

Что касается масштабирования динамических языков, то JVM является результатом многолетних исследований. Существует много общего с Ruby и т. Д.

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

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

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
11

В недавнее интервью , Джозеф Снарр, технический руководитель Google, объяснил, как приложение использует Java Servlets для задней части и JavaScript на передней панели.

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

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

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
9

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

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
9

Вопрос должен быть «Почему Java не используется стартапами или для небольших проектов?». Java, безусловно, используется для «современных веб-приложений». В Google Java используется для бэкэнда для многих служб, а закрытие, скомпилированное JS или GWT, используется для интерфейса. Проблема заключается в скорости масштабирования. Стартапы должны получить минимально жизнеспособный продукт. Обычно это небольшие команды из 1-3 инженеров, а также скорость итерации по производительности или ремонтопригодности. Проблема с масштабируемостью или проблемами обслуживания кода кода - проблема, которую вы бы хотели иметь, то есть к тому моменту, когда вы достигнете этого этапа, это признак того, что ваша первоначальная реализация помогла вам преодолеть начальный горб получения клиентов или инвестиций. Вы можете позволить себе переписать приложение в этот момент.

Компания, подобная Google, может позволить себе роскошь строить вещи для увеличения масштаба, даже несмотря на то, что они могут тратить свое время на внедрение масштабирования для чего-то, что может не получить пользователей, потому что они могут поглощать потери.

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

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
7

Традиционные веб-приложения на Java, хотя и хорошо структурированные, очень далеки от «быстрого развития». Хотя я только когда-либо писал одно полное веб-приложение (Java /Tomcat /Struts), он был чрезвычайно придирчивым, занял больше времени, чем ожидалось, для отладки и, как правило, был болезненным при реализации уровня бизнес-логики. В потенциальной защите Java это было единственное веб-приложение, написанное на Java (хотя я привык к программированию приложений на уровне систем на Java), и я считаю, что во второй раз я мог бы написать еще одно веб-приложение.

Сказав это, я также написал приложения на PHP и C #, и они просто работают лучше и гораздо более просты, чем Java. Более того, Ruby on Rails была написана специально для быстрой разработки приложений, которые, как сказал Робби, позволяют легко доступ к базам данных CRUD. Проблема в том, что большинство веб-сайтов, которые вы будете разрабатывать самостоятельно, не нуждаются в уровне настройки, который предлагает Java (и требует от вас выполнения). Кроме того, каждый объект соединения с БД должен быть написан вручную и не так просто сделать шаблон. Там может быть лучшая структура, особенно та, которая использует преимущества новых функций поддержки динамического языка Java 7 , но я еще не проводил исследования.

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
7

Простой ответ: кривая обучения для повышения производительности.

Рамочные системы, такие как RoR, склонны помещать «волшебство» в язык /синтаксис. Очень легко наращивать базовый синтаксис RoR и получать приложение вверх и вниз.

Java была языком сначала, а инструменты и фреймворки появились позже. Поэтому сначала вы должны изучить Java, а затем вы должны изучить Spring, или Grails, или вашу супер-среду IDE, или что-то еще. Любимый пример Ruby, он не требует сеттеров и геттеров. Дело в том, что Java IDE также избавились от ручного кодирования ... но он все еще находится в вашем источнике. Преимущество такого подхода заключается в том, что под рамкой существует язык, который согласуется с тем, с чем могут работать все разработчики Java.

Это преимущество сомнительно для небольших стартапов, когда время имеет существенное значение. Обычно они делают очень мало, что они не могут сделать с рамкой. Таким образом, они могут захватить свою систему RAD, и на следующий день у вас появится приложение.

Но если вы посмотрите на Facebook и Twitter, по мере их расширения, они нашли вещи, которые невозможно обработать из-за рамки фреймворков, и поэтому им пришлось использовать технологии более низкого уровня.

Эта священная война, которую разработчики инфраструктур делают, что они могут делать все быстрее, является поддельной, они могут делать многое из того, что им нужно, проще и с меньшей кривой обучения. И для многих вещей это «достаточно хорошо». Используйте то, что подходит для проблемы.

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
6

Зависит от того, как вы определяете «современную разработку веб-приложений». Если вы говорите о запуске, быстро изменяющихся веб-сайтах, вам нужно будет рассмотреть языки и рамки, разработанные для этой цели. Если вы ищете стабильную, масштабируемую веб-разработку на уровне предприятия, вы ищете языки и фреймворки, поддерживающие эти идеалы. В моей книге это две разные цели. RoR, Groovy и т. Д., Хороши для первого, а Java более подходит, в общем, для последнего.

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
6

Google App Engine поддерживает Java, поэтому вы можете написать все веб-приложение на Java, используя Eclipse в качестве интерфейса IDE и развертывания, с достаточно документированным API Google, поэтому я бы не сказал, что он не используется или не используется.

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
5

В старте я работаю, мы решили использовать как Java, так и JRuby для реализации нашего API, потому что они дополняют друг друга.

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

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

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

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

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
5

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

Тем не менее, комментируя все исходные вопросы ...

Является ли это слабостью языка? По сравнению с другими языками, такими как Python или Ruby, Java многословна и имеет тенденцию нуждаться в большем количестве кода, чтобы делать подобные вещи. Но это не просто возможности языка, а также окружающая его среда и вид разработчиков, которые используют эти инструменты. Таким образом, большинство модулей и инструментов на Python, Ruby, PHP и т. Д. Являются с открытым исходным кодом и их легче найти, чем в Java-мире, только потому, что он больше ориентирован на предоставление (и зарядку) услуг. Например, сообщество Ruby действительно действительно ориентировано на веб-разработку, поэтому каждый разработчик, способный использовать Ruby, будет знать о проблемах и доступных инструментах для веб-проекта. Это не обязательно верно для разработчиков Java, которые могли бы работать с другими системами, такими как системы отчетности. Конечно, любой хороший разработчик наверстает упущенное, но мнение о том, что средний разработчик Java меньше беспокоится о изучении новых технологий и новых языков.

Является ли это несправедливым стереотипом Java, потому что он был так долго (он был несправедливо связан со своими более старыми технологиями и не получил признания за его «современные» возможности)? Java на самом деле не такой старый, и, будучи справедливым, он значительно улучшился. Это была крутая, соответствующая платформа около 10 лет назад. Но с тех пор появились новые платформы с новыми проблемами, такими как Ruby on Rails. Основной сектор Java - это, в основном, корпоративный мир с разными проблемами, поэтому люди, которые ищут новые проекты за его пределами, искали разные инструменты. Кроме того, основное преимущество дизайна 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.

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
5

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

Существует достаточно фреймворков (spring-mvc, grails, play и т. д.), которые позволяют быстро строить вещи. Тот факт, что люди переоценивают свои системы, - это проблема, которая возникает из-за того, что люди получают знания, когда они работают с экосистемой Java - вы знаете гораздо больше, и у вас есть их (есть инструменты для всего), и «все выглядит так: Гвоздь".

Если вы «взломаны», вы можете сделать почти то же самое с Java, как и с другими языками, и вот исследование, показывающее, что:

Исследование 49 программистов: система статического типа не повлияла на время разработки ...

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
3

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

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

Кроме того, если вы идете с Linux и PHP /Python /Ruby, инструменты и платформа бесплатны и предназначены для поддержки друг друга. С Java иногда кажется, что два мира (ОС и Java) иногда не работают в гармонии друг с другом.

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
3

Кто говорит, что это не так?

Spring MVC + Spring Data JPA или Mongo + Thymeleaf для шаблонов + кофе-maven-плагин для кофе в JS транспилинг, и вам хорошо идти.

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
3

Многие могут ассоциировать разработку Java и веб-приложений с ужасами J2EE, которые в комплекте с чудовищными серверами приложений J2EE из крупных синих и красных корпораций равнялись неделям работы, прежде чем базовый «Hello World» был в сети.

Правда, последние спецификации и реализации JEE более легкие, но я бы все же подумал трижды, прежде чем предлагать что-то подобное для проекта быстрого развития с коротким циклом.

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

Другие языки изображают одно решение «под ключ» вместо этого множества. Это делает этот выбор более подходящим для вас, когда у вас есть более важная рыба, чтобы жарить.

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21
2

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

ответил markijbema 23 Jam1000000amMon, 23 Jan 2012 11:06:21 +040012 2012, 11:06:21

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132