Запуск Java как веб-приложения - PullRequest
6 голосов
/ 05 августа 2009

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

Однако я не уверен на 100%, имеет ли смысл идти по маршруту Java. Я ожидал, что PHP или ASP.NET серверный код будет с Ajax / JavaScript или более тяжелой клиентской JavaScript-программой, использующей JScript.

Может ли кто-нибудь объяснить основную среду Java, когда она поставляется с веб-приложениями? Я сделал вывод следующее: я лаю правильное дерево?

  • Java при запуске как ASP.NET называется JSP
  • JavaBeans немного похож на .NET Framework, то есть это библиотека многократно используемых компонентов
  • Java EE немного похож на ASP.NET в том смысле, что это платформа для создания веб-страниц на сервере
  • Java также может работать на клиенте, но для этого требуется установка Java VM

При запуске Java на клиенте, можете ли вы использовать JavaBeans и есть ли фреймворк? Может ли он также использовать JScript? Я так не думаю, поскольку JScript - это библиотека JavaScript.

Хотя запуск Java на сервере был бы нормальным, это относительно небольшое приложение, и поэтому Java звучит немного излишне. PHP или ASP.NET чувствуют себя лучше.

Но я не думаю, что они должны запускать апплет Java в браузере, и это добавляет сложности, которая не нужна.

Ответы [ 7 ]

11 голосов
/ 05 августа 2009

Давайте попробуем определить некоторые термины (не обязательно на 100% точные, но понятные)

  • Java: может быть много вещей: язык, JVM, платформа, идея, ...
  • Java SE: Java Standard Edition: «обычная» Java, используемая для запуска настольных приложений. Ранее это называлось «Java 2 SE» и «J2SE».
  • Java EE: Java Enterprise Edition. Стек уровня предприятия для разработки веб-приложений и других более сложных животных (содержит множество компонентов). Ранее это называлось «Java 2 EE» и «J2EE».
  • JSP: страницы сервера Java. Язык, который позволяет смешивать контент HTML / XML с Java Scriptlets. В значительной степени эквивалентно ASP.NET.
  • Java Beans (примечание: не «JavaBeans»): довольно легкая спецификация, которая просто описывает, как должны быть написаны классы, чтобы их свойства и методы могли быть автоматически обнаружены. Не путать с корпоративными компонентами Java (EJB)
  • Enterprise Java Beans / EJB: гораздо более сложный старший брат Java Beans. Позволяет инкапсулировать некоторые части вашего приложения. Ужасно сложный и громоздкий в использовании (немного улучшился в последних версиях, но это изменение, похоже, пришло с запозданием).

JScript является диалектом JavaScript от Microsoft и не имеет никакого отношения к Java.

Кстати, JavaScript тоже не имеет ничего общего с Java. Единственными сходствами являются первые 4 символа их имени и поверхностное сходство в синтаксисе.

Так что в основном: если они хотят написать приложение Java для взаимодействия с вашим приложением, которое просто предоставляет некоторый XML, то Java определенно подходит для этого. Для этого вам не нужны никакие технологии Java EE. Java SE более чем достаточно для этого.

Редактировать: Обратите внимание, что довольно распространенной практикой является не использовать весь стек Java EE для (небольших по размеру) веб-приложений. В частности, Apache Tomcat , который широко используется, не является полноценным сервером Java EE (как того требует спецификация Java EE), а скорее является реализацией стандартов JSP и сервлетов (двух основных частей Java EE ). Он по-прежнему прекрасно работает на многих полезных веб-приложениях на Java, поскольку они просто не используют более сложные функции Java EE.

4 голосов
/ 05 августа 2009

Java при запуске как ASP.NET называется JSP

Это своего рода правда - традиционная страница JSP очень похожа на классическую страницу ASP. Там нет "codebehind", как у вас с ASPX.

Большая разница в Java заключается в том, что веб-инфраструктура основана на вещах, называемых сервлетами. Сервлет немного похож на ASP.NET «axd» в том, что он обрабатывает необработанные HTTP-запросы (get, post и т. Д.) И выдает ответ.

Помимо этой "базы" сервлетов, существует множество других сред - JSP является одним из них (JSP в конечном итоге компилируются сервером в сервлеты). JSF, Struts, Tapestry и многие другие также построены на этой базе. В мире .NET у вас действительно есть два варианта - ASP.NET (страницы .aspx с выделенным кодом) или .NET MVC. Большинство веб-фреймворков Java больше похожи на .NET MVC, хотя (насколько я понимаю) JSF больше похож на ASP.NET

JavaBeans немного похож на .NET рамки, то есть это библиотека повторно используемые компоненты

Не совсем. То, о чем вы думаете, - это J2SE, который является базовой структурой, на которой построены все приложения Java - имеет классы коллекций, сокеты, безопасность и т. Д. И т. Д. JavaBeans - это всего лишь спецификация для написания объектов типа DTO (стандартное именование для геттеры и сеттеры и т. д.)

Java EE немного похож на ASP.NET в этом это основа для создания сети страницы на сервере

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

Java также может работать на клиенте, но это требуется установка Java VM

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

Что касается вашей оценки использования Java против PHP и .NET, я работал со всеми из них, и я бы сказал, что Java является наиболее сложной, но также очень мощной для очень крупномасштабных приложений. PHP будет самым простым на сегодняшний день, и отлично подходит для небольших приложений, но может стать грязным, когда все станет больше. ASP.NET имеет довольно хороший баланс. Немного сложнее, чем PHP, но и намного мощнее.

1 голос
/ 05 августа 2009

Это кажется довольно хорошим обзором ландшафта.

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

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

Так что, если они пишут это, просто позвольте им сделать это.

С другой стороны вас программиста .Net просят освоить Java, я думаю, что это неочевидно (и я - Java для своего ядра Blue) подход к созданию веб-сайта в условиях «зеленого поля» я бы использовал что-то вроде php или Smash

Преимущество Java в смысле JE или, я полагаю, полноценного подхода .Net заключается в том, что вы получаете масштабируемое, понятное, управляемое (это слово?) Решение. Только потому, что функция небольшая и простая, не думайте, что она не будет интенсивно использоваться.

0 голосов
/ 04 апреля 2010

Это действительно должна быть Java? Возможно, вы могли бы написать небольшое веб-приложение, используя JRuby или Groovy, которое использует ваш веб-сервис ASP.NET. В JRuby, Groovy и старой доброй java есть инструменты (.ie. Apache CFX), которые позволяют вам использовать WSDL для создания клиентов на лету.

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

Если это позднее, вы можете быстро избавиться от этого с помощью Java или JRuby / Groovy. Поскольку более поздние технологии могут быть скомпилированы в jar, они могут работать на JVM.

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

В первом случае вы можете пойти по пути JRuby / Groovy и создать небольшое веб-приложение, которое вы сможете развернуть на урезанном сервере приложений Jetty / GlassFish / Tomcat. Или вы можете пойти по пути Java и использовать одну из многих фреймворков.

Независимо от выбора языка JVM, создать веб-приложение намного проще, чем толстый клиент. Создание нетривиального GUI-клиента с Java с хорошим дизайном пользовательского интерфейса, к сожалению, не тривиальная задача. Я работаю как с веб-клиентами, так и с толстыми клиентами, и это мой опыт (YMMV).

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

И если вы действительно придерживаетесь простых сервлетов и не используете JSP (то есть сервлет создает вывод HTML), вы можете использовать действительно средний и скудный контейнер сервлетов, такой как TJWS , LWS или Winstone , который может работать с объемом менее 1 МБ.

Надеюсь, это поможет.

0 голосов
/ 05 августа 2009

Короткий ответ - на вопрос, который вы не задавали :) - это: Java должна работать нормально. Если Java - это то, что ваш клиент / партнер / что-либо, что наиболее удобно использовать, позвольте им * использовать это.

В частности:

  • Если вы написали обычный веб-сервис SOAP с WSDL, у приложения Java не должно возникнуть никаких проблем с ним. Я написал Java-клиенты, которые общаются с веб-службами .NET и .NET-клиентами, которые общаются с веб-службами Java, и, хотя всегда есть небольшая сложность, нет серьезных хлопот, если только службы не отправляют встроенные двоичные объекты или что-то еще. Нестандартный, как этот.

  • Если вы только что написали что-то, что служит необработанным XML через HTTP, у Java не должно быть больше проблем с этим, чем было бы .NET.

Java не обязательно более тяжелый, чем PHP или ASP.NET, если вы используете облегченный сервер, такой как Jetty . Никакие апплеты браузера не должны быть вовлечены. А у Java есть надежные стабильные библиотеки для общения с веб-сервисами. (PHP тоже, но я был бы удивлен, если бы Java не были намного более загружены).

По другим вопросам вы можете взглянуть на статью в Википедии " .NET framework: .NET против Java и J2EE ." *


* Если они хотят, чтобы вы написали свой конец веб-сервиса, это совсем другая игра с мячом. Возможно, у них есть какая-то существующая инфраструктура Java, которую они действительно, действительно нуждаются в повторном использовании - в этом случае я бы предложил выбрать хорошую базовую книгу, такую ​​как Head First Servlets от O'Reilly и JSP - но в противном случае, если .NET - ваш опыт, это то, что они должны позволять вам использовать. Если им не нравится Microsoft, скажите им, что она будет работать под Mono .

0 голосов
/ 05 августа 2009

Мне не совсем понятно, пишешь ли ты веб-сервис или он уже написан, и кто-то просто хочет его использовать?

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

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

Если вы решили использовать Java, у меня есть опыт работы с Axis2 , и все становится просто, когда вы осознаете, что он делает. Вы можете написать POJO (Plain Old Java Object) и сказать Axis, что вы хотите показать. Загрузите его на Tomcat или что-то подобное, и все готово.

0 голосов
/ 05 августа 2009

Звучит так, будто вы хорошо разбираетесь в вещах.

Вы правильно колеблетесь, используя J2EE для небольшого веб-приложения. Мне показалось полезным сравнение функции .NET / J2EE . Обратите особое внимание на сравнение затрат и сложности на втором графике тестового проекта, разработанного Microsoft и Sun.

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

...