Да, вы правы. ?: обычно называется «тернарным условным оператором», который часто называют просто «тройным оператором». Это сокращенная версия стандарта if / else условная.
Ключевой дифференциатор, что предложения EE Java по стеку LAMP могут быть сведены к отдельному слову. Транзакции.
Большинство меньших систем просто полагается на систему транзакции, предоставленную базой данных, и для многих приложений, который является (очевидно) довольно удовлетворительным.
, Но каждый сервер EE Java включает менеджера по распределенной транзакции. Это позволяет Вам сделать более сложные вещи, через разнообразные системы, безопасно и надежно.
самым простым примером этого является простой сценарий взятия записи от базы данных, помещение его на обменивающейся сообщениями очереди (JMS) и затем удалении той строки от базы данных. Этот простой случай включает две отдельных системы и не может надежно быть убран сторона транзакции. Например, можно поставить строку к очереди сообщений, но (из-за системного отказа) не удаляют строку из базы данных. Вы видите, как наличие транзакции с поставщиком JMS и отдельной транзакции с базой данных действительно не решает проблему, поскольку транзакции не соединены.
, Очевидно, этот простой сценарий может работаться вокруг, имевший дело с, и т.д. Хорошая вещь с EE Java, тем не менее, состоит в том, что Вы не должны заниматься подобными проблемами - контейнер добирается для контакта с ними.
И, снова, не каждая проблема требует этой обработки транзакции уровня o. Но для тех, которые делают, это неоценимо. И как только Вы привыкаете к использованию их, Вы найдете, что управление транзакциями сервера EE Java большой актив.
Веб-серверы EE Java большой пушки (Jboss, WebSphere, WebLogic и т.д.), и Windows Server/IIS/ASP.NET находятся действительно в другой лиге в масштабируемости и производительности, чем Ваша типичная стопка лампы.
Моя команда ответственна за один из самых больших телекоммуникационных торговых сайтов в Соединенных Штатах, обрабатывая миллионы хитов в день (Одна из наших баз данных составляет более чем 1000 ТБ в размере, чтобы дать Вам некоторую перспективу).
Мы используем комбинацию ASP.NET и ISA WebSphere, а также SAP (Который является также решением для EE Java) для различных разделов нашего сайта, нет абсолютно никакого способа, которым стек LAMP мог обработать этот вид загрузки, не масштабируясь к значительным суммам аппаратных средств.... Описатели секции стопки.NET большинство загрузки и работают только на 32 серверах.
Мы также не делаем ничего необычного, такого как использование решения для типа memcached или статического HTTP cacheing... мы действительно кэшируем вызовы SOAP, и база данных обращается к серверам отдельного приложения, но нет смысла в базе данных памяти, и т.д.... наша платформа может обработать его до сих пор.
Так да, его яблоки к апельсинам для сравнения этого вида материала к ЛАМПЕ.
Можно создать действительно огромные и масштабируемые приложения с EE Java, и он широко используется в обработке данных предприятия.
, Но:
Мой опыт с EE Java был довольно неудачным, потому что он походил на 90% работы, которую делала моя команда, был шаблон и инфраструктура. Наша производительность в то время была очень, намного ниже, чем она, возможно, имелась, мы использовали другой технологический стек.
Amazon.com, eBay, Google - они все используют подмножество EE Java, и они довольно успешны. Они все используют сервлеты и JSPs
, При попытке использовать EJB 1.1 или EJB 2.0, тогда масштабируемость поражена. Производительность разработчика также уменьшается в результате создания поблочного тестирования тяжелее.
С EJB 3.0, производительностью разработчика и масштабируемостью приложения улучшается.
Так, в зависимости от какой Ваше приложение потребности, использование только те части EE Java, который имеет смысл для Вас. Сделайте демонстрационную POC (подтверждение концепции) с помощью только те части, которые Вы намереваетесь использовать. Эта POC покажет, как хорошо приложение будет работать.
НОВЫМ серверам JAVA EE-приложения не всегда нужно много XML. Они позволят Вам использовать аннотацию, чтобы сделать отображение базы данных и внедрение зависимости.
больше чем 50% всего развития предпринимательства происходят на EE Java (когда я говорю, что, это главным образом использует подмножество стека Java EE. кто-то мог бы использовать сеансовый объект без сохранения состояния EJBs, кто-то мог бы просто JNDI, кто-то мог бы использовать УПРАВЛЯЕМЫЙ СООБЩЕНИЯМИ КОМПОНЕНТ EJB).
Hope это помогает.
Почти все ответы упоминают то, что это берет для создания сети Java EE приложение. Позвольте мне упомянуть другое важное соображение. Большинство предприятий имеет значительные требования бэк-офиса, где корпоративное приложение должно интегрироваться с другими приложениями. Это может колебаться от присоединения до некоторой неработоспособной старой программы мэйнфрейма КОБОЛа к стеку LAMP к небольшому приложению Доступа, которое некоторый бухгалтер сделал на скорую руку ночью, и т.д. Обычно это означает необходимость в своего рода решении для обмена сообщениями, чтобы заставить 2 или больше приложения поднимать трубку вместе. По моему опыту, я нашел, что мир EE Java расширяет себя далее для контакта с этими проблемами интеграции, чем типичный стек LAMP.
Ядро EE Java является просто набором интерфейсов, которым обеспечил реализации контейнер. Большинство приложений не использует всю спецификацию EE Java.
существует два основных аспекта EE Java, о котором думают люди, когда они обсуждают его: EJBs и Сервлеты.
у меня нет опыта вообще с EJBs. Я использую Платформа Spring и как таковой, она обеспечивает всю "инфраструктуру и шаблон" код, на который ссылаются как в ответе Ben Collins. Это обеспечивает все, что нам был нужен EJBs, чтобы сделать, и затем некоторые (транзакции с доступом к базе данных то, для чего мы используем его специальные функции, хотя мы используем его контейнер IOC также для части Сервлета).
Сервлеты, однако, являются фантастическими. Они - очень хорошая и доказанная технология.
ядро Сервлета является циклом ответа и запросом: пользователь запрашивает что-то, и сервер прерывает запрос и обеспечивает ответ на основе его. Цепочка запросов и ответов может отслеживаться посредством Сессии для отдельного пользователя.
Что касается высокой цены серверов закрытого приложения, я понятия не имею, почему цена так высока, но Tomcat Apache является очень хорошим контейнером Сервлета и свободен. Мы используем Tomcat для тестирования, и WebSphere для развертывания (Websphere предоставляет наш клиент для использования приложений). К сожалению, это - только Websphere 6 (обновите 11, как мы узнали к нашей тревоге, которая не имеет фиксации для обновления 13, который позволяет функциям JSTL работать правильно при содержании в теге JSP), таким образом, мы вынуждены использовать Java 1.4x, не Java 1.5 +.
существует также несколько платформ (см. платформу Spring, на которую ссылаются прежде для примера), которые позволяют легкую разработку Сервлета. Если Вы просто используете это для HTTP/HTML, существует большое количество платформ для легкой помощи Вам в этой разработке.
Масштабируемость и другие вопросы в стороне, вот одна простая вещь, которая не была упомянута, который может быть преимуществом: это - Java.
При выборе платформы в коммерческой установке любой мог бы оказаться важным.
С точки зрения масштабируемости Java EE дает Вам огромный выбор, который Вы не имеете со стеком LAMP или Ruby. Весь выбор вращается вокруг приложений N-tier, в то время как большая часть ЛАМПЫ и рубиновых приложений являются 2 уровнями.
Я разрабатываю приложение и план по разрешению людям доступа к API по сети. Java EE позволит мне легко масштабировать средний уровень, не влияя на уровень UI. Поскольку я добавляю интерфейсы к своему приложению, я могу масштабировать средний уровень очень легко. Стек LAMP не имеет никакого понятия этого, встроенного.
Таким образом, я имею к интерфейсам, веб-UI и API SOAP. Теперь я хочу отдых API. Хорошо... Сборка, которые взаимодействуют через интерфейс для удара среднего уровня также.. и добавьте больше компьютеров к кластеру.. или пойдите, мультикластер действительно не имеет значения. Этот средний уровень является всем EJB, более быстрым протоколом затем SOAP во многих отношениях.
Теперь скажем, то, что я хочу добавить, что способность к SMS пишет моим пользователям. Я также должен сделать это на основе того, что они устанавливают, и это прибывает из базы данных. Мудрая масштабируемость, я хочу разъединить фактическую отправку текста от реализации, которую приложения хотят отправить ему. Это кричит JMS. Я могу использовать Боб Таймера, чтобы уйти каждое X количества времени и выяснить то, какие сообщения должны быть отправлены и помещают каждое сообщение в JMS. Теперь я могу управлять очередью и сколько процессоров работает над нею и т.д. Я вижу, сколько текстов выходит. Я могу даже поместить получатели на другое поле, приводящее к небольшому влиянию на мою другую мудрую производительность серверов.
Масштабируясь мудрый, я вижу, какой из моего EJB's становится пораженным больше всего и добавляет больше ресурсов к тем, в то время как удаление ресурсов формирует других. Я могу сделать это с очередями JMS и любой частью стека Java EE технологий. Мало того, что я получаю масштабируемость, я получаю управление своими ресурсами серверов.
Так как ЛАМПА и Ruby еще не имеют JMS как очередь для асинхронной обработки или способности легко поместить бизнес-логику в отдельный уровень, их может быть более трудно масштабировать с несколькими интерфейсами. Что необходимо сделать, срывают логику и делают это доступным для другого интерфейса? Скажем, это теперь Вы не только предоставляете сети UI, но и настольный UI, Интерфейс IVR и интерфейс SOAP для Вашего веб-сайта?
EE Java и другие языки программы нужно рассматривать точно так же, как любой другой инструмент. Да, это использовалось в корпоративной среде, и это берет хорошее мастерство, чтобы заставить эти инструменты работать "отлично" и знающий, когда использовать его. Я в настоящее время работаю над Средой мейнфреймов, и EE Java используется в некоторой степени. Если бы высокоскоростная транзакция включена, EE Java был бы моим последним выбором. Если многоплатформенная совместимость необходима, то EE Java, XML и веб-сервисы были бы более соответствующими.