WebSphere MQ для начинающих
В рамках одной из задач было необходимо интегрироваться с внешней системой. В проме и у всех разработчиков стоит IBM WebSphere поэтому WebSphere MQ отлично вписывался, учитывая также то, что с IBM WebSphere у них отличная интеграция «из коробки». Для начала установим и настроим WebSphere и WebSphere MQ, после напишем простое приложение для отправки и приема данных из очереди и завершим все установкой и настройкой HermesJMS и посмотрим как отправлять и просматривать сообщения из нее. Все будет производится в Windows 7. Перед тем как продолжать скачайте выше перечисленные программы.
Установка и настройка WebSphere и WebSphere MQ
Надеюсь Вы уже скачали все необходимые программы и готовы приступить к установке. Первым делом запустите установщик IBM Installation Manager. Дабы не увеличивать размер статьи скриншоты, которые не имеют особой смысловой нагрузки, буду убирать в спойлеры, т.к. полностью удалить из статьи считаю неправильно т.к. они дают понимание что Вы делаете все правильно.
Скриншоты



Перезапускаем Instalation Manager и идем в пункт Файл -> Параметры. Добавляем хранилище из первого диска.

Нажимаем ОК и начинаем установку.
Скриншоты с описанием




Убираем флажок с русского перевода.


Далее установщик попросит вставить диски 2 и 3. Вставляем их.

После установки автоматически запустится менеджер профилей.

Нажимаем кнопку «Create. » и далее делаем как на скриншотах ниже.
Скриншоты




Теперь установим WebSphere MQ.
Скриншоты








После того как установка завершена давайте настроим WebSphere MQ и WebSphere. Начнем с WebSphere MQ так как нам понадобятся имена очередей и менеджер очередей при настройке WebSphere. Все команды исполняются из директории bin каталога WebSphere MQ. Первым делом создадим менеджер очередей и назовем его HABR_QUEUE_MANAGER, используя команду crtmqm.exe HABR_QUEUE_MANAGER.

Запустим наш только что созданный менеджер очередей с помощью команды strmqm.exe HABR_QUEUE_MANAGER.

- DEFINE QLOCAL(HOME.TO.ES) — очередь для отправки сообщений из нашего приложения во внешнюю систему
- DEFINE QLOCAL(ES.TO.HOME) — очередь для приема сообщений из внешней системы
- DEFINE LISTENER(HABR_QUEUE_MANAGER.LISTENER) TRPTYPE (TCP) PORT(1414)
- START LISTENER(HABR_QUEUE_MANAGER.LISTENER)
- DEFINE CHANNEL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN)

Приступим к настройке WebSphere Application Server.
Создадим Connection factory. Для этого запустим консоль администратора и выберем пункт Resources->JMS providers->WebSphere MQ messaging provider->Queue connection factories->New (Как показано на скриншоте ниже).
Далее вводим имя и jndi имя.


Вписываем имя queue manager-а.


Если при проверке соединения возникает сообщение(которое показано на скриншоте ниже), то произведите следующие действия.
- Снова запустите командную строку MQ и выполните runmqsc.exe HABR_QUEUE_MANAGER
- Наберите ALTER QMGR CHLAUTH(DISABLED)
- Перейдите в раздел службы в Windows и у службы IBM MQSeries в разделе «Вход в систему» замените на свою учетную запись. Тоже самое проделайте для службы WebSphere Application Server 8.5
- Перезагрузите систему и запустите HABR_QUEUE_MANAGER и стартаните LISTENER(HABR_QUEUE_MANAGER.LISTENER)
- Теперь все должно заработать

Теперь создаем очереди. Нам нужно создать 2 очереди. Названия у них будут как и у очередей, созданных в WebSphere MQ. Если кто забыл то они называются ES.TO.HOME и HOME.TO.ES. Идем в пункт Resources->JMS->Queues->New


Вторую создаем по аналогии.

Осталось настроить Listener port. Заходим в Application servers -> server1 -> Message listener service -> Listener ports и добавляем новый.

Сохраняем конфигурацию. Мы указали jndi имя queue connection manager-а и jndi имя очереди, в которую будут приходить сообщения из внешней системы. Запустите порт.
Теперь у нас есть настроенные WebSphere Application Server и WebSphere MQ. Можно приступать к созданию простого тестового приложения.
Создание простого приложения для отправки и приема сообщений из очереди
Я умышленно при разработке приложения не буду использовать различные средства для сборки проектов таких как Maven, Gradle или ant, чтобы вы могли понять что вообще происходит за кулисами. Но все же для удобства напишу пару скриптов, с помощью которых будет производится сборка проекта в ear. Весь проект я выложил на github. Ниже я опишу только основные моменты.
Отправка сообщения в очередь
Чтобы отправить сообщение создадим сервлет, бин и форму для ввода сообщения.
Начнем с класса JMSMessageBean из модуля ejb-core. В методе ejbCreate мы получаем ссылки на Connection factory и очередь, в которую будем отправлять сообщения. Метод processMessage предназначен для создания текстового сообщения и отправки его в очередь.
public class JMSMessageBean implements SessionBean < private SessionContext sessionContext; private QueueConnectionFactory connectionFactory; private Queue destination; public boolean processMessage(String message) < QueueConnection jmsConnection = null; QueueSession jmsSession = null; try < jmsConnection = connectionFactory.createQueueConnection(); jmsSession = jmsConnection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE); TextMessage jmsMessage = jmsSession.createTextMessage(); jmsMessage.setText(message); jmsSession.createSender(destination).send(jmsMessage); >catch (JMSException e) < return false; >finally < try < if (jmsSession != null) < jmsSession.close(); >if (jmsConnection != null) < jmsConnection.close(); >> catch (JMSException e) < e.printStackTrace(); >> return true; > public void ejbCreate() throws EJBException < try < Context ctx = new InitialContext(); connectionFactory = (QueueConnectionFactory) ctx.lookup("java:comp/env/QMHabr"); destination = (Queue) ctx.lookup("java:comp/env/jms/HOME.TO.ES"); >catch (NamingException e) < throw new EJBException(e); >> @Override public void ejbActivate() throws EJBException < >@Override public void ejbPassivate() throws EJBException < >@Override public void ejbRemove() throws EJBException < >@Override public void setSessionContext(SessionContext sessionContext) throws EJBException < this.sessionContext = sessionContext; >>
Ниже показан наш сервлет SendJMSMessageServlet. В методе init получаем ссылку на бин, который описан выше. Далее в методе doPost он принимает сообщение от формы и направляет методу processMessage бина. Всю остальную работу выполняет бин.
public class SendJMSMessageServlet extends HttpServlet < private static final String MESSAGE_PARAMETER_NAME = "message"; private static final String MESSAGE_SENDING_SUCCESS = "Сообщение успешно отправлено"; private static final String MESSAGE_SENDING_ERROR = "Сообщение отправлено с ошибкой"; private JMSMessage jmsMessage = null; @Override public void init() throws ServletException < super.init(); try < Context ctx = new InitialContext(); Object objHome = ctx.lookup("java:comp/env/ejb/JMSMessageLocal"); JMSMessageHome jmsMessageHome = (JMSMessageHome) PortableRemoteObject.narrow(objHome, JMSMessageHome.class); jmsMessage = jmsMessageHome.create(); >catch (Exception e) < throw new ServletException(e); >> @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException < request.getRequestDispatcher("/sendMessage.jsp").forward(request, response); >@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException < request.setCharacterEncoding("UTF-8"); String message = request.getParameter(MESSAGE_PARAMETER_NAME); request.setAttribute(MESSAGE_PARAMETER_NAME, (jmsMessage.processMessage(message)) ? MESSAGE_SENDING_SUCCESS : MESSAGE_SENDING_ERROR); request.getRequestDispatcher("/viewMessage.jsp").forward(request, response); >>
Html форма отправки самая элементарная. Это не самая важная часть. Сообщение можно было захардкодить или получать из properties файла. Но код все равно приведу.
Отправка сообщения в очередь
Установка и настройка HermesJMS
Если WebSphere MQ установлена на другой машине и Вам надоело бегать проверять сообщения в очереди или просто хотите иметь удобное средство для отправки тестовых сообщений в очередь, то можно использовать HermesJMS. Возможно есть аналоги, но те, которые я находил, были платные. Посоветуйте в комментариях хорошие бесплатные аналоги если знаете. С удовольствием рассмотрю другие подобные системы. Конкретно в HermesJMS не совсем устраивают некоторые UI баги и не освобождаются ресурсы если отправлять сообщение из файла (лочит намертво), но жить с ними можно.
И так, приступим к установке и настройке.
Скриншоты





Запустите HermesJMS и добавьте новую сессию. Для начала перейдите во вкладку Providers и добавьте новую группу. Назовите ее как на скриншоте(хотя это не важно) и добавьте все jar файлы, перечисленные ниже.

После добавления провайдера в пункте Session выберите его из выпадающего списка. Пример настройки других полей показан на скриншоте ниже.

Теперь попробуем отправить сообщение в нашу очередь. Для это заходим по адресу http://localhost:9080/habr/sendMessage и вводим любое сообщение в поле ввода и нажимаем кнопку «Отправить».

Теперь откройте HermesJMS и откройте очередь HOME.TO.ES на просмотр. Если Вы увидели сообщение как показано ниже на скриншоте, то все произведенные выше действия Вы выполнили верно.

На этом я статью завершаю. Всем спасибо за внимание! Надеюсь она будет кому-то полезна.
WebSphere
WebSphere — семейство программных продуктов фирмы IBM. Часто WebSphere употребляется в качестве названия одного конкретного продукта: WebSphere Application Server (WAS). WebSphere относится к категории middleware — промежуточного программного обеспечения, которое позволяет приложениям электронного бизнеса (e-business) работать на разных платформах на основе веб‐технологий.
WebSphere использует открытые стандарты XML и веб‐службы, реализованные на J2EE. Разработка ведётся в лабораториях IBM по всему миру. В России доступна локализованная версия WebSphere.
Продукты семейства
- IBM CICS Transaction Server
- IBM WebSphere Application Server (WAS)
- IBM WebSphere Business Integration Connect
- IBM WebSphere Business Integration InterChange Server (ICS)
- IBM WebSphere Business Integration Server Foundation
- IBM WebSphere Business Monitor
- IBM WebSphere Commerce
- IBM WebSphere Commerce Enhancements for Version 6.0
- IBM WebSphere Customer Center
- IBM WebSphere Data Interchange
- IBM WebSphere Developer for zSeries (WDz)
- IBM WebSphere Edge Server
- IBM WebSphere ESB (Enterprise Service Bus)
- IBM WebSphere Everyplace Connection Manager
- IBM WebSphere Host Access Transformation Services (HATS)
- IBM WebSphere Information Integrator (formerly Ascential software)
- IBM WebSphere Message Broker
- IBM WebSphere MQ (formerly MQSeries)
- IBM WebSphere Partner GateWay
- IBM WebSphere Portal
- IBM WebSphere Process Server (WPS)
- IBM WebSphere Product Center
- IBM WebSphere RFID Premises Server
- IBM WebSphere Studio Application Monitor (WSAM)
- IBM WebSphere Studio Asset Analyzer (WSAA)
- IBM WebSphere Data Integration Suite
- IBM WebSphere DataStage
- IBM WebSphere QualityStage
- IBM WebSphere ProfileStage
WebSphere версии
WebSphere версия WebSphere 3.5 WebSphere 4.0 WebSphere 5.0 WebSphere 5.1 WebSphere 6.0 WebSphere 6.1 WebSphere 7.0 WebSphere 8.0 WebSphere 8.5 Дата выпуска 1998 ? август 2001 январь 2003 январь 2004 конец 2004 май 2006 октябрь 2008 июнь 2011 июнь 2012 Конец поддержки 30 ноябрь 2003 30 апреля 2005 30 сентября 2006 30 сентября 2008 JDK 1.2 1.3 1.3 1.4 1.4 5.0 6.0 6.0 7.0 JavaEE ? 1.2 1.3 1.3 1.4 1.4 5.0 6.0 6.0 Servlet 2.1 2.2 2.2 2.3 2.3 2.4 2.4 2.5 3.0 3.0 JSP 0.91 1.0 1.1 1.1 1.2 1.2 2.0 2.0 2.1 2.2 2.2 EJB 1.0 1.1 2.0 2.0 2.1 2.1 3.0 3.1 3.1 WebSphere версия 3.5 4.0 5.0 5.1 6.0 6.1 7.0 8.0 8.5 См. также
- DB2
- WebLogic
- JBoss
International Business Machines Corporation Оборудование Cell · System z · IBM i · IBM PC (IBM PCjr · IBM PC/XT · IBM PC/AT · IBM PS/1 · IBM PS/2 · IBM Aptiva) · POWER Программное обеспечение DB2 · Informix · IMS · Lotus · Rational · Tivoli · WebSphere · Cognos · SPSS · ILOG Консалтинг и IT-услуги IBM Global Services См. также IBM PC-совместимый компьютер · IBM Public License · История · Слияния и поглощения · Продукты · Технологическая школа IBM Ежегодный доход: ▲ $103,6 млрд (FY 2008) · Сотрудников: 398 455 (2009) · Листинг на бирже:NYSE: IBM · Сайт:www.ibm.com - Java Enterprise Edition
- IBM WebSphere
Wikimedia Foundation . 2010 .
Полезное
Смотреть что такое «WebSphere» в других словарях:
- Websphere — ist eine Produktlinie der Firma IBM, die unterschiedliche Software für Anwendungsintegration, Infrastruktur (z. B. Transaktionen und Warteschlangen) und eine integrierte Entwicklungsumgebung umfasst. Bekannte WebSphere Produkte sind unter anderem … Deutsch Wikipedia
- Websphere — WebSphere семейство программных продуктов фирмы WebSphere Application Server (WAS). WebSphere относится к категории middleware промежуточного программного обеспечения, которое позволяет приложениям электронного бизнеса (e business) работать на… … Википедия
- WebSphere — Développeur IBM Environnements Java EE … Wikipédia en Français
- Websphere — est une marque du groupe IBM. Le nom de Websphere renvoie généralement à la plate forme applicative WebSphere Application Server (WAS). Sommaire 1 La plate forme applicative 2 Les produits Websphere 3 WAS … Wikipédia en Français
- WebSphere MQ — WebSphere MQ, anciennement MQ Series est une famille de logiciels, développé par IBM depuis 1992. Websphere MQ est un service de messagerie inter applicative (ou MOM pour Message Oriented Middleware), c est à dire qu il permet la communication… … Wikipédia en Français
- WebSphere — Logo WebSphere ist eine Produktlinie der Firma IBM, die unterschiedliche Software für Anwendungsintegration, Infrastruktur (z. B. Transaktionen und Warteschlangen) und eine integrierte Entwicklungsumgebung umfasst. Bekannte WebSphere Produkte… … Deutsch Wikipedia
- Websphere MQ — IBM WebSphere MQ семейство сетевого ПО открытое MQSeries: IBM переименовало его в 2002 для ассоциации с линейкой продуктов промежуточное ПО для сообщения (Message Oriented Middleware). Оно позволяет независимым и, возможно, работающим не… … Википедия
- WebSphere (software) — WebSphere es una familia de productos de software propietario de IBM, aunque el término se refiere de manera popular a uno de sus productos específicos: WebSphere Application Server (WAS). WebSphere ayudó a definir la categoría de software… … Wikipedia Español
- WebSphere Application Server — WebSphere ist eine Produktlinie der Firma IBM, die unterschiedliche Software für Anwendungsintegration, Infrastruktur (z. B. Transaktionen und Warteschlangen) und eine integrierte Entwicklungsumgebung umfasst. Bekannte WebSphere Produkte sind… … Deutsch Wikipedia
- Websphere Studio Application Developer — WebSphere ist eine Produktlinie der Firma IBM, die unterschiedliche Software für Anwendungsintegration, Infrastruktur (z. B. Transaktionen und Warteschlangen) und eine integrierte Entwicklungsumgebung umfasst. Bekannte WebSphere Produkte sind… … Deutsch Wikipedia
- Обратная связь: Техподдержка, Реклама на сайте
- Путешествия
Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.- Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
- Искать во всех словарях
- Искать в переводах
- Искать в ИнтернетеИскать в этой же категории
WebSphere Application Server Liberty Profile
Если раньше Вам приходилось сталкиваться с разработкой приложений для WebSphere Application Server (далее WAS), то Вы конечно же знаете, что это процесс небыстрый. Для этого требовалось разворачивать свой собственный, «тяжелый», сервер приложений, одна перезагрузка которого занимала длительное время. В команде разработки WebSphere долго думали над тем, как предоставить разработчикам самую простую, лучшую и доступную среду для создания новых веб-приложений для WAS. В результате в версии WAS 8.5 появился новый Liberty Profile, который значительно упрощает процесс разработки приложений для WAS.
Итак, что такое Liberty Profile и что он делает?
По сути Liberty Profile – это динамический профиль WAS, который позволяет WAS-серверу предоставлять только те функции, которые требуются приложению (или нескольким приложениям), развернутому на этом сервере. Если приложению нужны сервлеты, то запускается лишь ядро WAS, HTTP-транспорт и веб-контейнер. Все это происходит очень быстро (за несколько секунд) и требует весьма скромного объема ресурсов. Вам нужен JPA-провайдер для доступа к реляционным данным? Вам не придется долго искать, достаточно добавить опцию JPA и конфигурацию хранения данных и Liberty Profile включит все необходимое. Все это делается в динамическом режиме. Даже несмотря на то, что сервер перезапускается за несколько секунд, Вам не придется этого делать. Это очень важно для разработки, так как Вы постоянно добавляете в приложение новые возможности, меняете код и исправляете ошибки. Разработчикам необходимо, чтобы внесение изменений в программный код и в конфигурацию было простым, и чтобы эти изменения немедленно отражались в среде тестирования. Все это становится таким простым с Liberty Profile и новыми инструментами WAS Developer Tools.
Где скачать?
Скачать Liberty Profile можно на сайте WASdev — WebSphere Application Server V8.5.5 Liberty Profile. Данный сайт предлагает установить Liberty Profile двумя способами:
- Используя Eclipse Marketplace Client. Перетягиваем кнопку install на панель Eclipse и следуем дальнейшим указаниям.
- Используя JAR архивы.
Установка
Скачиваем файл wlp-developers-runtime-8.5.5.1.jar и запускаем команду:
java -jar wlp-developers-runtime-8.5.5.1.jarПринимаем условия лицензионного соглашения, а также указываем директорию, в которую необходимо разархивировать Liberty Profile. В моем случае это директория /Users/alex/Dev/WebSphere, в ней автоматически будет создана поддиректория wlp. Собственно директория wlp и есть наш Liberty Profile. Что далее? Необходимо ознакомиться с базовыми командами, которые нам предлагает утилита server находящаяся в директории bin.
Утилита server
* create — создает новый сервер
./bin/server create TestServer Server TestServer created.* start — запускает сервер в фоновом режиме
./bin/server start TestServer Starting server TestServer. Server TestServer started with process ID 56059.* run — запускает сервер в консольном режиме
./bin/server run TestServer Launching TestServer (WebSphere Application Server 8.5.5.1/wlp-1.0.4.cl50120131011-1639) on Java HotSpot(TM) 64-Bit Server VM, version 1.7.0_45-b18 (en_US) [AUDIT ] CWWKE0001I: The server TestServer has been launched. [AUDIT ] CWWKZ0058I: Monitoring dropins for applications. [AUDIT ] CWWKF0011I: The server TestServer is ready to run a smarter planet.* stop — останавливает запущенный сервер
./bin/server stop TestServer Stopping server TestServer. Server TestServer stopped.* status — проверяет, запущен ли указанный сервер
./bin/server status TestServer Server TestServer is not running.Конфигурация сервера
Конфигурация сервера хранится в файле server.xml, который, в свою очередь, находится в директории usr/servers/TestServer/. Посмотрим его содержимое:
more usr/servers/TestServer/server.xmljsp-2.2 По умолчанию сервер использует TCP/IP порт 9080 для HTTP трафика, а также порт 9081 для HTTPS трафика.

Запускаем сервер любым удобным для Вас способом и переходим в браузере на страницу http://localhost:9080/:
Установка приложений используя папку dropins
Если приложение не использует каких-либо специфических настроек, Вы можете поместить его (как архив или папку) в директорию dropins. Запущенный сервер автоматически определит изменения в статических или динамических ресурсах, например таких как JSP. Для обновления, допустим, сервлетов необходимо удалить приложение из папки dropins, немного подождать и добавить обновленную версию.
Установка приложений используя конфигурацию сервера
Если приложение использует какие-либо специфические настройки, Вам нужно поместить его в директорию apps и настроить в файле server.xml. Для того чтобы удалить приложение, удалите его настройки из файла server.xml. Можно настроить мониториг изменений в настроенных приложениях с автоматическим перезапуском, если были изменения.
Добавим поддержку Web Services, JMS и MongoDB
Скачиваем файл wlp-developers-extended-8.5.5.1.jar и запускаем команду:
java -jar wlp-developers-extended-8.5.5.1.jarПринимаем условия лицензионного соглашения, а также указываем директорию, в которой установлен Liberty Profile.
Проверяем работоспособность Liberty Profile
Скачиваем Servlet Sample, разархивируем его в директорию Liberty Profile.
java -jar ServletSample.jarЗапускаем сервер и переходим в браузере на страницу http://localhost:9122/ServletApp/:
/bin/server run ServletSample Launching ServletSample (WebSphere Application Server 8.5.5.1/wlp-1.0.4.cl50120131011-1639) on Java HotSpot(TM) 64-Bit Server VM, version 1.7.0_45-b18 (en_US) [AUDIT ] CWWKE0001I: The server ServletSample has been launched. [AUDIT ] CWWKZ0058I: Monitoring dropins for applications. [AUDIT ] CWWKT0016I: Web application available (default_host): http://localhost:9122/ServletApp/ [AUDIT ] CWWKZ0001I: Application ServletApp started in 0.220 seconds. [AUDIT ] CWWKF0011I: The server ServletSample is ready to run a smarter planet.
Другие примеры можно скачать на странице Liberty Repository — Product Samples.
Полезные ссылки
- WASdev
- WebSphere Application Server, Network Deployment, Version 8.5
- Using the Liberty profile as an application development environment
- Liberty profile: Configuration elements in the server.xml file
- stackoverflow: websphere-liberty
- WebSphere Application Server Liberty Profile Guide for Developers
Microsoft vs IBM: серьёзные изменения в поддержке Java
Неожиданно для Java-сообщества Microsoft превзошла IBM в представительстве среди Developer Advocate на конференции Oracle Code One.
Когда-то IBM была, вероятно, доминирующей силой в корпоративном сегменте Java-сообщества. Тем не менее, на Oracle Code One 2019 всё указывало на то, что нас ожидает серьёзный сдвиг в противостоянии Microsoft и IBM.
IBM всегда вкладывала значительные средства в Java-разработку, в то время как Microsoft не беспокоилась об этом. Но похоже, что IBM собирается выйти из-за стола Java, а Microsoft готовится занять это место.
Microsoft vs IBM: смена ролей
IBM создала среду Eclipse. IBM «подсадила» клиентов из Fortune 500 на WebSphere, что привело к широкому распространению серверной Java. И когда 10 лет назад Oracle купила Sun Microsystems, IBM сделала серьёзную ставку на технологии Sun. Если бы Oracle не сделала интересное предложение, вероятно, IBM завладела бы языком Java.
Но интерес IBM со временем уменьшился, и компания пренебрегла своими пользователями WebSphere, предоставляя им странные обновления для инструментов управления веб-контентом (Web Content Management — WCM), инструментов управления сервером и порталом. Даже сегодня WCM-редактор не поддерживает несколько браузерных вкладок. Веб-интерфейс серверной админки разваливается при нажатии кнопки «назад», а инструмент конфигурирования портала сильно устарел. Никто в отрасли не удивился, когда IBM продала бизнес WebSphere компании HCL Industries ранее в этом году.
Со стороны пользователей чувствовалось, что IBM уже давно отказалась от WebSphere и серверной Java. Вместо этого, в «Big Blue» фокусируются на AI, облачных технологиях и их неоднозначном ассортименте инструментов под брендом Watson. Безусловно, IBM не представила столь же большого представительства на Oracle Code One 2019, как это было тогда, когда конференция называлась JavaOne, и это резко контрастирует на фоне Microsoft.
Microsoft vs IBM: пока одни находятся на пути к Java-разработчикам, другие отказываются от них
Платформа Microsoft .NET всегда была прямым конкурентом Java EE, и любой инструмент под флагом Билла Гейтса ожидала критика со стороны Java-сообщества — не важно, насколько это было обосновано. Несмотря на репутацию в сознании Java-разработчиков, Microsoft за последние 18 месяцев сделала всё возможное, чтобы порадовать сообщество.
Microsoft стала спонсором AdoptOpenJDK в июне 2018. Совсем недавно Microsoft купила jClarity, и Java-чемпионы, соответственно, Martijn Verburg и Ben Evans, перешли в Microsoft. И несмотря на собственную популярную и мощную систему контроля версий — Team Foundation Server, Microsoft потратила $7.5 млрд. на GitHub, распределённую систему контроля версий, на которой размещено множество проектов Apache и других Java-проектов с открытым исходным кодом.
Серверы Microsoft никогда не были ориентированы на Java EE приложения. Но cloud-native Java-приложения, работающие в Docker, могут быть легко развёрнуты на Microsoft Azure. Контейнеризация открыла для Microsoft ранее недоступный рынок корпоративных Java-приложений.
Oracle Code One 2019 запомнится как поворотный момент в противостоянии Microsoft и IBM. В этом году Microsoft серьёзно взялась за проникновение в Java-сообщество, превращаясь из аутсайдера в важного игрока.
Понимание этого пришло, когда я увидел выступление Kirk Pepperdine на Code One — Java-чемпиона, который всегды был независим, и осознал, что сейчас он главный инженер в Microsoft. А также Reza Rahman — бывшый евангелист Java EE в Oracle — представлял Microsoft в BoF-сессии («Birds of a Feather»).
Предельно ясно, Microsoft сделала серьёзную ставку на корпоративный сегмент Java-рынка, тогда как IBM погрузилась в другие направления.
Как вы думаете, что побудило Microsoft зайти в корпоративную Java?
