Коли Java є хорошим вибором для веб-розробки? [зачинено]


35

Коли Java є хорошим вибором для веб-розробки?

Будь ласка, не кажіть "Коли у вас є команда розробників, яка знає лише Java".


5
Можна запитати, яка функція робить Java мовою моєї веб-розробки?
Абімаран Кугатасан

1
Невеликий недолік використання Java - це відсутність домінуючої структури на ринку дефакто. Жодна база, що базується на Java, ще не піднялася на вершину стопки (як, наприклад, у Struts раніше). Особисто я схиляюся до Spring MVC, якщо я працюю з додатком Spring або Grails для чого-небудь іншого (як ви можете викликати на Java в будь-який час).
Martijn Verburg

Раптом отримали 25 балів від цього питання!
Гульшан

ми беремо до уваги існуюче відкрите програмне забезпечення?
Джонатан

2
"як у Struts було ще в той час": Що не так з використанням стійок сьогодні (крім того, що це вже не модно)?
Джорджіо

Відповіді:


35

Враховуючи багато доступних рамок, зрілість платформи тощо, я спокушаюся сказати «майже завжди». Ось ось кілька причин, коли не слід використовувати Java:

  • як чистий магазин MS, ви, мабуть, вважаєте за краще це робити .net способом
  • якщо вам потрібен найдешевший можливий веб-хостинг, напевно, у вас є лише PHP як ваш вибір
  • якщо ви хочете зробити це якомога швидше, Ruby on Rails, Grails або Django, ймовірно, краще підходять для ваших потреб
  • якщо ваша команда розробників знає лише XYZ, де XYZ! = Java, краще використовуйте XYZ

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 (з кількома обмеженнями) у хмарі безкоштовно для сайтів з низьким та середнім трафіком.


У всіх випадках я не буду розміщувати свій веб-сайт у вільному веб-хостингу. Але питання, чи існує проблема з платним веб-хостингом Java? Це дуже дорого, наприклад?
Goma

1
@saeed, не як такий. Більшість людей просто йдуть на найдешевший варіант і відповідно кодують.

Невже Джейв набагато дорожчий, ніж інші? чи є спільний хостинг для Java?
Гома

@Saeed, є деякі технічні причини, що ви не можете згрупувати стільки JVM в одному вікні Linux і Windows, оскільки ви можете створювати спільні екземпляри LAMP, що неявно означає, що розміщений JVM дорожчий, ніж розміщений LAMP. Google використовує інший JVM, тобто вони можуть пропонувати його безкоштовно.

@ Thorbjörn: Чи є у вас посилання про те, як Google це робить? Я чув, що вони використовують Jetty, але більше нічого не знаю про їх рішення.
Йонас

12

Коли ваша платформа UNIX / Linux і вам потрібен багатий набір інструментів, таких як Об'єктивно-реляційне картографування, Безпека, Комплексна організація веб-служб тощо.
(Ми не говоримо про прості веб-сайти, чи не так?)


1
Ви можете отримати цей матеріал і з мов сценаріїв - подивіться на Python та SQLAlchemy. Навіть Rails використовує ORM (ActiveRecord) і має гарну безпеку.
Брайан Д.

3
Дійсно, але я не думаю, що вони є настільки потужними, як системи Hibernate, Spring Framework, BPEL.
Сорантис

1
Що не так з Java у не-UNIX / Windows.
Том Хотін - таклін

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, а все інше - це лише ледве задоволення критеріїв, щоб насправді зробити це кулею в їх резюме, запропонуйте їм створити просту програму з різноманітними напівскладними сторінками на кінці HTML і спробуйте це простий тест. Розбити деякий HTML. Спробуйте змусити їх зрозуміти, що не так. Якщо безпосередня проблема, яку вони починають вирішувати, - це відволікати провину від себе, тримайте їх! @ # $ Подалі від веб-розробки. Веб-розробник є мультидисциплінарним і вимагає активного інтересу до цієї галузі, щоб мати успіх. Це не місце для людей, які хочуть лише підтримувати знання однієї мови і більше жахаються від проблем, ніж зацікавлені у їх вирішенні.

Я не запевняю, що сама Java є коренем некомпетентності, і я чув, що Весна - це добре. Я впевнений, що там є грамотні команди Java. Я просто ще не зіткнувся з одним і не думаю, що це збіг обставин. Я думаю, що Сонце має багато спільного з цим. Я також думаю, що робота з веб-командами на зразок чи під ІТ-відділами має багато спільного з цим.


1
У мене ті самі проблеми, що ви описуєте, але ніколи не думав, що це може залежати від мови програмування. Ви думаєте, що люди, які програмують, скажімо, на PHP, більш відкриті та гнучкі?
Виталий Олегович

PHP - це 100% про розробника і менше про культуру, яка його оточує. Мені не подобається його нестабільність в основі, але я б довіряв роботі команди PHP середнього рівня для веб-розробки таким чином, щоб я не довіряв команді Java. Це допомагає досвідченому розробнику PHP навряд чи працювати з чим-небудь, окрім Інтернету, і він, швидше за все, не був найнятий для отримання досвіду над ступенем / повноваженнями. Проблема з Java може бути частково обумовлена ​​властивою мовою жорсткістю, але я, чесно кажучи, думаю, це більше стосується природи того, як навчаються розробники Java, приймаються рішення Java та наймаються Java-розробники.
Ерік Реппен

1
@Erik Reppen: Я думаю, ви переоцінюєте свій досвід: я не думаю, що команди Java гірші, ніж команди, які працюють іншими мовами або, принаймні, не гірші за середні. Я знаю два дуже хороших магазини, які сильно працюють з Java. Перший - робить проекти на Java та в Ruby (близько 50% кожна). Другий працює в основному на Java, але робив окремі проекти в Scala та в Common Lisp.
Джорджіо

@Giorgio Я пропустив це, але я працював з іншими людьми, що працюють з бек-ендом через .NET, Rails, Java та PHP. Я не рахую одноразового досвіду з іншими мовами, і хитрі розробки, безумовно, не властиві Яві. Крім того, як я вже сказав, я на 100% впевнений, що там дуже грамотні команди Java. Хтось не повинен це смоктати, але ІМО, я не перероджую. Існує проблема з Java-розробниками на середньому рівні. Це культурне явище в моєму досвіді. Такий бридкий, що я перестав брати участь у магазинах Java, якщо не знаю, про кого йдеться.
Erik Reppen

5

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

Хоча, на мій досвід, Java частіше зустрічається на великих веб-сайтах, де є більша потреба у складній обробці на стороні сервера - у цьому випадку ви знайдете більш складні рамки Java, які використовуються, наприклад, JavaServer Faces (JSF).

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


Це означає, що розміщення веб-додатків Java занадто дороге? чи це не так дешево, як, наприклад, PHP? чи можете ви дати мені хороший веб-посилання для Java, щоб я міг бачити ціни? Я здійснив пошук, але не знаю, у кого є стандартні ціни, тому я можу скласти уявлення про це.
Goma

1
розміщення веб-додатків Java не дороге, вам просто потрібен хостинг-провайдер, який дозволяє запускати програми Java. Будь-яке середовище хостингу Linux, де ви отримаєте обліковий запис для входу на комп'ютер, буде добре - я особисто використовую Ubuntu в веб-сервісах Amazon для мого хостингу на Java.
mikera

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 претендує. І не важко змусити його грати добре з іншими, коли потрібно вирішити проблему якоюсь іншою мовою. Я не знаю про Рубі, але Рейлс Девс - це щось з мого досвіду. Це ефект JQuery. Людям, які знають, що роблять, подобається, тому що це швидко і ефективно в правильних руках. Людям, які не знають, що роблять, подобається, тому що вони не повинні знати стільки.
Ерік Реппен

@Erik Reppen: З іншого боку, Ruby як мова має приємніший і послідовніший дизайн, ніж Python. Я дійсно думаю, що ці порівняння мови часто є питанням смаку, і хтось надає перевагу мовам, які вони більше знайомі.
Джорджіо

0

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

Більшість рішень для Інтернету цього не потребуватиме. Твіттер не відмовився від Rails, поки, наприклад, не почав досягати своєї популярності.


-1

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

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


+1 для JQuery :)
Авель

2
-1 для "javascript перетворюється на кошмар у підтримці коду". Це лише побічний ефект, який дозволяє вам Java-розробники писати javascript без будь-якої підготовки чи навчання JavaScript. і головним недоліком GWT є те, що це герметична абстракція, удача змусити її добре працювати на мобільних пристроях.
Райнос

Проблема з жорсткістю Java, IMO, полягає в тому, що ви закінчуєте безліч розробників, які не розуміють, чому їхній код насильно організований так, як це в першу чергу. Коли все повинно виглядати як ООП, іноді неминучим результатом є те, що насправді нічого немає.
Ерік Реппен

-1

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


-1

Я вважаю, що це було б тоді, коли ваша програма буде дуже складною, і багато людей розроблять її, з великою кількістю складних модулів, складної бізнес-логіки, і вона має спілкуватися з багатьма іншими програмами підприємств.

У будь-якому випадку, ви також можете розвиватися в Grails, який надає безліч приємних особливостей, багато полегшує розвиток і дозріває дуже швидко.


-1

Ява гаразд, але якщо продуктивність не має вирішального значення, ви можете отримати ті самі результати, доклавши менших зусиль на інших мовах.


2
"продуктивність не є надзвичайно важливою", коли саме ви повинні писати на C і збирати не Java.
Райнос

Орієнтовні показники порівняно з досвідом, сайти Java знизують руки як найгірший показник у моєму досвіді як клієнтський розробник. Це може бути питання середнього рівня талантів більше, ніж мова про мову.
Ерік Реппен

2
@ErikReppen: Однозначно талант. Швидкість Java на сервері поступається лише C / C ++. PHP або Rails просто не можуть порівняти. Але бібліотеки Java та деякі інструменти дуже легко втрачають всю цю швидкість, роблячи марно складні речі.
Зан Лінкс

-1

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

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


-2

Безпека

Основна причина, що великі компанії обирають Java над іншими рішеннями, полягає в тому, що вона вважається набагато більш безпечною.

Це головним чином тому, що його підтримує така велика компанія (зараз оракул).

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


7
Ага ... а безпека чарівно виходить із самої мови чи що?
Mchl

1
Ви знаєте, що Oracle НЕ єдиний постачальник контейнерів сервлетів Java, чи не так?
Mchl

6
Свята війна! Боротьба Боротьба!
абель

2
@Mchl Деякі з них походять з мови, а точніше з її VM. Скільки разів ви бачили перекриття буфера, націленого на сервери додатків Java? Це просто не варте зусиль. Сказавши це, Java вважається більш захищеною "галуззю", ніж вона є, і помилкове почуття безпеки може важко відбити.
biziclop

1
Моя думка тут полягала в тому, що вам потрібно розмежувати Java як мову та середовище виконання Java. Ніщо не робить мову Java більш-менш захищеною, ніж будь-яка інша мова. З іншого боку, JVM призначені (серед іншого) для виконання "байтового коду" Java, але їх безпека залежить від конкретної реалізації. Хоча гарна точка щодо помилкового почуття безпеки.
Mchl
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.