AlertMessagePool Инструкция по развёртыванию

AlertMessagePool представляет из себя Java Web SpringBoot приложение, оно является кросс платформенным и может быть запущено как на Linux так Windows системе

Этапы внедрения

0. Организовать проброс DNAT порта с внешнего интерфейса на котором присутствует реальный белый статичный IP адрес в сети Internet  

1. Установить MySQL сервер/клиент + MySQL Connector/J — ИНСТРУКЦИЯ

2. Установить Java JRE не ниже 1.8 

3. В случае установки через пакеты в ручную прописать все переменные в PATH для обеспечения запуска java из любой точки, а также проверить корректность установки компонентов MySQL, Connector/J/. Настроить начальный параметры авторизации 

4. Настроить Ferewal и открыть для доступа тот порт на котором в дальнейшем будет работать приложение

5. В случае Linux системы войти в консоль MySQL , выполнив команду  mysql -u -root -p

6. Создать пользователя последовательно выполнив команды, при этом заменив значения полей в кавычках  ‘user’ и ‘password’ на желаемые

CREATE USER 'user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON database.* TO 'user'@'%';
FLUSH PRIVILEGES;

7. Создать базу данных для приложения

CREATE DATABASE MessageAlertPool CHARACTER SET utf8 COLLATE utf8_general_ci;

8. Загрузка jar файла приложения СКАЧАТЬ

  • для Linux выполнив команду wget https://legan.by/blog/AlertPoolServer.jar

9. Загрузить конфигурационный файл application.properties, и положить его рядом в jar файлом

  • Для Linux выполнив команду wget https://legan.by/blog/application.properties

10. Внести правки в конфигурационный файл приложения в соответствующие поля , согласно ранее установленным значениями порта , пользователя, пароля

server.port=80 # Порт на который осуществлён DNAT проброс
spring.datasource.username = MySQL_User
spring.datasource.password = MySQL_Password

11. Настроить автоматический запуск приложения при старте системы,   вариации запуска могут отличатся в зависимости от типа ОС. Ниже будет приведёт пример организации запуска для Linux системы с системой управления службами systemctl

а) Создайте файл будущей службы выполнив команды

cd /etc/systemd/system
sudo nano alertpool.service

б) Скопируйте ниже приведённый текст в файл, заменив путь к целевой папке с jar файлом приложение на ваш, в обязательном порядке укажите WorkingDirectory для корректного подтягивания файла настроек

[Unit]
Description=Alert Pool Server
After=syslog.target
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/home/ubuntu
ExecStart=/usr/bin/java -jar -Duser.timezone=Europe/Moscow /home/ubuntu/AlertPoolServer.jar

RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

в) Последовательно выполните команды

sudo systemctl daemon-reload
sudo systemctl enable alertpool
sudo systemctl start alertpool

г) Для проверки статуса службы следует использовать 

sudo systemctl status alertpool

д) По умолчанию консольный вывод приложения будет транслироваться в /var/log/syslog, проанализировав его следует убедится в отсутствии ошибок запуска

ПС. Если все было сделано правильно то приложение будет доступно по следующему URL 

http://внешний_IP:порт/MessageAlertPool

Система управления логистикой и персоналом

Название проекта : ManagerSORC

Категория проекта : временно закрытый (до релизной версии)

Статус: В разработке

Git page : https://legan.by/gitea/VPKiTS/ManagerSORC

Production Link : https://legan.by/ManagerSORC/

Система управления персоналом и логистикой представляет из себя Web приложение в качестве Frontend используется Angular 7, Backend это Java + Spring Boot

Реализовано : 

  • Авторизация login/password
  • Авторизация при помощи JWT токенов
  • Двухфакторная авторизация при помощи SMS
  • Реализована доменная область в комплексе в CRUID функционалом
  • Реализован RESTFull API
  •  Интегрирован Yandex MAP API 
  • Реализован механизм приёма данных от клиентов GPS треков и отображение их на карте как за период так и в реальном времени
  • Ведётся работа по реализации Web интерфейса управления системой

PS. Данный пост будет обновляться по мере движения процесса разработки, всем заинтересованным лицам и бета тестировщикам рекомендовано подписаться на обновления.

Топ 5 библиотек машинного обучения для Java

Компании борются за программистов, способных писать код для машинного обучения и глубокого обучения. Если вам интересны эти темы, возможно, стоит присмотреться к лучшим библиотекам Java, посвящённым машинному обучению, уже сегодня?

Мини-глоссарий

Машинное обучение — подход, при котором искусственный интеллект изначально не знает, как решать конкретную задачу, но обучается этому процессу с помощью решения сходных задач. Для построения взаимосвязей используются разные математические методы. Глубокое или глубинное обучение — подвид машинного обучения, чаще всего использует нейронные сети, имитирующие принятие решений человеком. Глубокое обучение чаще всего требует огромных массивов данных для обучения. Например, если нужно настроить алгоритм для узнавания саксофона, программе придётся скормить не только изображения саксофонов, но также других похожих медных инструментов, чтобы в дальнейшем алгоритм их не путал.

Это перспективно?

Долгая зима развития искусственного интеллекта завершилась. Теперь машинное обучение — один из самых популярных навыков в технологиях, и специалисты, которые разбираются в этой теме — нарасхват. Пока что ни один язык не стал абсолютным лидером в сфере машинного обучения, но Java — явно в группе фаворитов. Так что если вам интересна наука, вы хотите не просто кодить, а заниматься исследованиями, предлагаем вам взглянуть на пятёрку лучших библиотек Java для программирования машинного обучения.

Топ 5 библиотек машинного обучения для Java - 2

Weka

Ссылка на библиотеку: https://www.cs.waikato.ac.nz/ml/weka/index.html Weka — наш абсолютный фаворит, и в этом нет ничего удивительного. Данный продукт задумывался как современная среда для разработки методов машинного обучения и применения их к реальным данным, среда, которая сделает методы машинного обучения доступными для повсеместного применения. С помощью Weka специалист в прикладной области может использовать методы машинного обучения для извлечения полезных знаний непосредственно из данных, возможно, очень большого объёма. Weka 3 — свободное программное обеспечение, написанное на Java. Продукт отлично интегрируется в другой код, поскольку предоставляет прямой доступ к библиотеке реализованных в ней алгоритмов. То есть вы сможете использовать уже написанные алгоритмы из других систем, реализованных на Java Кроме того, у Weka есть собственный пользовательский интерфейс Explorer, компонентный интерфейс Knowledge Flow, но также можно использовать командную строку. Кроме того, для Weka разработано приложение Experimenter для сравнения предсказательной способности алгоритмов машинного обучения на заданном наборе задач.

Топ 5 библиотек машинного обучения для Java - 3

«Сильная сторона Weka заключается в классификации. Так что она идеально подходит приложениям, требующим автоматической классификации данных. Weka также выполняет задачи по кластеризации, прогнозированию, отбору признаков и выявлению аномалий», — говорит Эйб Франк (Eibe Frank), профессор компьютерных наук университета Вайкато в Новой Зеландии. Набор алгоритмов машинного обучения Weka может быть применён напрямую к базе данных или вызван из вашего собственного кода Java. Он поддерживает несколько стандартных задач по сбору данных, включая предварительную обработку данных, классификацию, кластеризацию, визуализацию, регрессионный анализ и отбор признаков. Пример использования Weka с Java-кодом: https://weka.wikispaces.com/Use+WEKA+in+your+Java+code

Massive Online Analysis (MOA)

Ссылка на библиотеку: https://moa.cms.waikato.ac.nz/ MOA (Massive On-Line Analysis) — фреймворк для разработки потоков данных. Он включает инструменты для оценки и набор алгоритмов машинного обучения, эффективными по времени и с точки зрения использования памяти. Данная библиотека с открытым исходным кодом используется непосредственно для машинного обучения и сбора информации в потоках данных в режиме реального времени. MOA написана на Java, так что её без проблем можно использовать вместе с Weka для решения масштабных и сложных задач. Набор алгоритмов машинного обучения MOA и механизмы оценки полезны для регрессионного анализа, классификации, обнаружения выбросов, кластеризации, рекомендательных систем. MOA также может оказаться полезной для изменяющихся наборов и потоков данных, а также данных, произведённых устройствами интернета вещей (IoT, Internet of Things).

Топ 5 библиотек машинного обучения для Java - 4

Рабочий процесс в MOA следует простой схеме: сначала выбирается и настраивается поток данных (канал, генератор), затем избирается алгоритм (например, классификатор), задаются его параметры. На третьем шаге выбирается метод оценки или мера, после чего будет получен результат.

Топ 5 библиотек машинного обучения для Java - 5

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

Deeplearning4

Ссылка на библиотеку: https://deeplearning4j.org/ Deeplearning4j — один из инновационных участников, который вносит значительные инновации в экосистему Java. Это очень качественная библиотека, open-source проект на Java и Scala, предложенный нам отличными ребятами (и полуразумными роботами!) Skymind. Идея Deep;earning4j состоит в том, чтобы объединить глубокие нейронные сети и углублённое обучение для бизнес-среды.

Топ 5 библиотек машинного обучения для Java - 6

Deeplearning4j — отличный DIY-инструмент для Java-, Scala- и Clojure-программистов, которые работают с Hadoop, фреймворком для разработки и выполнения распределённых программ, работающих на кластерах с тысячами узлов. Hadoop обладает огромной вычислительной мощностью и возможностью обработки практически неограниченного числа параллельных задач. Глубокие нейронные сети и глубокое обучение с подкреплением (deep reinforcement learning) способны к распознаванию образов и целевому машинному обучению. Это означает, что Deeplearning4j очень полезен для определения моделей и настроений в речи, звуке и тексте. Кроме того, библиотеку можно использовать для обнаружения аномалий в данных временных рядов, таких как финансовые транзакции.

MALLET

Ссылка на библиотеку: http://mallet.cs.umass.edu/ MALLET — это open-source инструментарий Java, его авторы — Эндрю Маккалум (Andrew McCallum) и студенты UMASS и UPenn. Эта библиотека разработана в первую очередь для обработки текста с применением машинного обучения. Расшифровка названия библиотеки — MAchine Learning for LanguagE Toolkit.

Топ 5 библиотек машинного обучения для Java - 7

Данный пакет программ поддерживает статистическую обработку естественного языка, кластеризацию, классификацию документов, информационный поиск, вопросы моделирования и другие приложения углублённого изучения. Главный конёк MALLET — современные инструменты для классификации документов, такие как эффективные стандартные процедуры для преобразования текста. Он поддерживает широкий спектр алгоритмов, включая наивный Байесов алгоритм, дерево принятия решений, алгоритм максимальной Decision Trees и метод максимума энтропии, а также код для анализа работоспособности классификатора.

ELKI

Ссылка на библиотеку: https://elki-project.github.io/ ELKI расшифровывается как Environment for Developing KDD-Applications Supported by Index Structures, что можно перевести как «среда для разработки KDD-приложений, поддерживаемых индексными структурами». В свою очередь, KDD — Knowledge discovery in databases — аббревиатура, за которой скрывается возможность масштабного извлечения знаний из данных. В центре внимания ELKI лежит исследование алгоритмов с акцентом на неконтролируемые методы в кластерном анализе и обнаружении выбросов. Для достижения высокой производительности и масштабируемости ELKI предлагает структуры индексов данных, такие как R*-деревья (такие структуры данных применяются для индексирования пространственной информации), которые могут обеспечить значительный прирост производительности. ELKI легко расширяется и стремится предоставить большой набор высокопараметрируемых алгоритмов, чтобы обеспечить легкую и справедливую оценку алгоритмов.

Топ 5 библиотек машинного обучения для Java - 8

Это означает, что ELKI крайне полезна в области науки о данных. Этот инструмент успели использовать при изучении звуков кашалотов, космических полётов и прогнозировании трафика. Возможно, вы знаете другую библиотеку машинного обучения Java, о которой не было рассказано? Делитесь с нами в своих комментариях, интересно узнать, что же мы могли упустить! По материалам jaxenter

Шпаргалка Java-программиста

Добрый день, данная статья о моем opensource pet проекте на github’e useful-java-links, в котором я собрал большое количество ссылок на полезные открытые (и некоторые закрытые) проекты. Этот проект существует на двух языках сразу русском и английском, которые являются полными дубликатами друг друга (кроме отсутствия ссылок на русскоязычные ресурсы в английской версии).

 

Данный проект — форк такого проекта как awesome-java, плюс добавлены все не мобильные проекты github’a c количеством звезд более 390 (то что описано в этой статье), все проект Apache верхнего уровня, ряд других ссылок, плюс ссылки на русскоязычное видео из этой статьи. В целом, количество полезных ссылок примерно в два раза больше чем в awesome-java. Есть строгая структура разделов, сразу дана информация об лицензиях и возможности использования данной лицензии в закрытом продукте (то есть строгость копилефта и возможность линкования с закрытыми проектами) и количество звезд набранным каждым проектом.

 

Буду очень благодарен за любые исправления и дополнения в данный сборник (добавить можно как в комментариях к статье, так и просто на github’e ). И за помощь в распространении ссылок на данный проект как среди русскоязычных, так и среди англоязычных (так как версия на английском полностью аналогична русской). В этой статье даны все ссылки, однако обновляемая версия все-таки будет на github’e.

 

Общее оглавление ‘Шпаргалок’

I. Фреймворки и библиотеки

1. Фреймворки и библиотеки общего назначения

 

К оглавлению

 

  1. Spring framework Spring — наверное, самый распространенный фреймворк Java в мире. Лицензия: Apache 2, рейтинг github’а — 5921, на stackoverflow — более 100 тыс.вопросовМожно использовать в коммерческом закрытым ПО
  2. Google Guava Очень популярная библиотека от гугла, расширяющая возможности JDK, в том числе добавляющая новые коллекции, добавляющая элементы функционального программирования в Java, кэширование, функции работы с примитивами, библиотеки работы с многопоточностью, аннотациями, строками, I/O, и т.п. Работает с JDK1.6 и выше.. Лицензия: Apache 2, рейтинг github’а — 3813. Лицензия совместима с закрытым ПО
  3. Apache Commons — Реализует различные функции, такие как конфигурирование, валидирование, коллекции, загрузка файлов или работу с XML, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  4. Spring Boot — система быстрого создания конфигурации из типовых шаблоннов (шаблонов настройки orm, DI, Spring MVC и т.п.). Лицензия: Apache 2, рейтинг github’а — 2386. Лицензия совместима с закрытым ПО
  5. Lombok Очень горячие добавления для языка программирования Java. Генератор кода, целью которого является сокращения реализации рутинного кода. Лицензия: MIT, рейтинг github’а — 1540. Лицензия совместима с закрытым ПО
  6. Puniverse Quasar Quasar это библиотека, добавляющая Fibers (высокопроизводительные легкие threads), Go-подобные channels и Erlang-подобные actors в JVM. Лицензия: Eclipse Public v1.0/GNU Lesser 3, рейтинг github’а — 1091. Лицензия совместима с закрытым ПО
  7. Rootbeer GPU Compiler Rootbeer GPU Compiler — программирование с использованием GPU на Java. Лицензия: MIT, рейтинг github’а — 972. Можно использовать в коммерческом закрытым ПО
  8. Oblac Jodd Jodd это набор Java инструментов и микро фреймворк, компактный, но мощный. Jodd = tools + ioc + mvc + db + aop + tx + json + html < 1.5 Mb. Лицензия: BSD 2, рейтинг github’а — 912. Можно использовать в коммерческом закрытым ПО
  9. Google Jimfs Jimfs это in-memory файловая система для Java 7 и выше, реализующая API абстрактной файловой системы, описанный в java.nio.file… Лицензия: Apache 2, рейтинг github’а — 752. Лицензия совместима с закрытым ПО
  10. Spring batch Spring Batch это легковесный, всеобъемлющий фреймворк, предназначенный для разработки надежных приложений, работающих по расписанию (batch applications), жизненно важных для ежедневных операций корпоративных систем… Лицензия: Apache 2, рейтинг github’а — 448. Можно использовать в коммерческом закрытым ПО
  11. Greenrobot common greenrobot-common — маленькая библиотека добавляющая общие утилиты и классы (например, классы работы со stream-based IO, файлами, строками, датой/временем и hash map/hash set с примитивными типами) для Android и Java проектов.. Лицензия: Apache 2, рейтинг github’а — 419. Можно использовать в коммерческом закрытым ПО
  12. Kilim Легковесные потоки для Java с обменом сообщениями, nio, http и поддержкой расписания. Лицензия: MIT, рейтинг github’а — 517. Лицензия совместима с закрытым ПО
  13. Apache Isis Apache Isis это фреймворк для разработки rapidly developing domain-driven приложений на in Java. Лицензия: Apache 2Можно использовать в коммерческом закрытым ПО
  14. Apache Zest Apache Zest это фремворк для разработки Composite Oriented Programming для domain centric приложений. Это концепция включает вв себя такие концепции как: Aspect Oriented Programming, Dependency Injection и Domain Driven Design. Лицензия: Apache 2Можно использовать в коммерческом закрытым ПО

 

2. Вебфреймворки (Web Frameworks)

Вебфреймворки (Web Frameworks)

 

Вебфреймворки служат для реализации вебприложений и обработки взаимодйствия service-side и frontend-side вебприложений.
К оглавлению

 

  1. Play Framework Play Framework позволяет легко разрабатывать расширяемые вебприложения на Java и Scala. https://www.playframework.com/. Лицензия: Apache 2, рейтинг github’а — 6771. Лицензия совместима с закрытым ПО
  2. Spark Фреймворк, вдохновленный фреймоворком Sinatra, для java. Лицензия: Apache 2, рейтинг github’а — 2596. Можно использовать в коммерческом закрытым ПО
  3. Atmosphere — фреймворк для разработки клиентской и серверной части асинхронных веб.приложений, поддерживающий разные серверны, браузеры и плагины. Лицензия: CDDL1 / Apache 2, рейтинг github’а — 2235. Лицензия совместима с закрытым ПО
  4. Grails — вебфреймворк. https://grails.org/ Лицензия: Apache 2, рейтинг github’а — 1386. Лицензия совместима с закрытым ПО
  5. Ninja это полноценный веб фреймворк для Java. Надежный, быстрый и очень продуктивный.http://www.ninjaframework.org/. Лицензия: Apache 2, рейтинг github’а — 894. Лицензия совместима с закрытым ПО
  6. Electronicarts Orbit — современный фреймворк для JVM языков, который упрощает создание и обслуживание распределенных и масштабируемых онлайн сервисов. Лицензия: BSD 3, рейтинг github’а — 741. Лицензия совместима с закрытым ПО
  7. Ratpack это простой, мощный набор библиотек для создания высокопроизводительных вебприложений. http://ratpack.io/ Лицензия: Apache 2, рейтинг github’а — 662. Лицензия совместима с закрытым ПО
  8. Vaadin — фреймворк для разработки веб-приложений, основанный на GWT, с server-side моделью программирования и состоянием UI на сервере.https://vaadin.com/ Лицензия: Apache 2, рейтинг github’а — 398. Лицензия совместима с закрытым ПО
  9. ZK framework Java фреймворк для создания высокопроизводительных веб и мобильных приложений… Лицензия: GNU Lesser, рейтинг github’а — 161. Лицензия совместима с закрытым ПО
  10. Apache Tapestry — Компонентно-ориентированный фреймворк для создания динамичных, надежных, легко маштабируемый веб приложений, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  11. Apache Wicket — Компонентно-ориентированный вебфреймворк, похожий на Tapestry с stateful GUI, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  12. Google Web Toolkit — Набор инструментов разработки, включающий компилятор из Java кода в JavaScript для создания кода, исполняемого в браузере, XML парсер, API для RPC, интеграция с JUnit, поддержка разных языков и локалей и виджеты для создания GUI, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  13. Pippo — Небольшой, модульный Sinatra-подобный микрофреймворк, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  14. Spring MVC — Предоставляет много различных возможностей для разработки вебприложений от dependency injection до аспектно-ориентированного программирования и поддержки security, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  15. JavaServer Faces — Открытая реализация JSF стандарта от Oracle, Лицензия: GNU 2 или CDDL 1.0Не соместимая с закрытым ПО лицензия
  16. JavaServer Pages — Популярная Java технология шаблонов для создания вебсайтов с реализацией пользовательских тегов, Лицензия: GNU 2 или CDDL 1.0Не соместимая с закрытым ПО лицензия
  17. Apache Cocoon Separation of concerns и component-based вебфремворк. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  18. Apache Struts Apache Struts это открытый фреймворк для создания Java веб приложений. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  19. Apache Sling Иновационный веб фреймворк основанный на JCR и OSGi. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  20. Apache MyFaces Первая открытая реализация JavaServer Faces. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  21. Apache Pivot Apache Pivot это открытая платформа для создания installable Internet applications (IIAs) [другое название rich Internet application]. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  22. Apache Turbine Turbine это основанный на сервлетах фреймворк, который позволяет Java developers быстро разрабатывать вебприложения. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  23. Apache OODT Apache OODT это компонентный вебфреймворк. Лицензия: Apache 2Лицензия совместима с закрытым ПО

Библиотеки для Web разработки

 

  1. Tobie ua-parser много языковое портирование библиотеки для парсенга параметров user agent браузера. Лицензия: Apache 2/MIT/Perl, рейтинг github’а — 1497. Лицензия совместима с закрытым ПО
  2. Ghost Driver это реализация Remote WebDriver Wire протокола, использующая PhantomJS как бэкенд. Лицензия: BSD 2, рейтинг github’а — 1179. Лицензия совместима с закрытым ПО
  3. B3log Solo — система управления блогами на Java. Лицензия: Apache 2, рейтинг github’а — 519. Лицензия совместима с закрытым ПО
  4. Baasbox это проект для создания backend для мобильных и веб приложений. Лицензия: ?, рейтинг github’а — 499.
  5. Kolorobot Spring MVC 4 Quickstart Maven Archetype — проект-шаблон (архитип) для Maven’a для быстрого создания проектов вебприложений Spring MVC 4. Содержит Spring MVC 4, Servlet 3.0, Thymeleaf, Bootstrap, JPA 2.0, MongoDB, JUnit/Mockito, Spring Security 3.2. Лицензия: ?, рейтинг github’а — 480.
  6. Gargl — Generic API Recorder and Generator Lite (произносится «Gargle») — инструмент для автоматизации любого вебсайта, позволяет записывать любые запросы к сайту и превращать их в повторно используемый код на любом из языком программирования. Лицензия: MIT, рейтинг github’а — 462. Лицензия совместима с закрытым ПО
  7. Liferay plugins — набор плагинов для Liferay портала. Лицензия: GNU Lesser 2.1, рейтинг github’а — 444. Лицензия совместима с закрытым ПО
  8. Netflix Ribbon это библиотека для создания load balancers. Лицензия: Apache 2, рейтинг github’а — 410. Лицензия совместима с закрытым ПО
  9. Gwt bootstrap это библиотека объединяющая виджеты из Twitter Bootstrap и возможности Google Web Toolkit. Лицензия: Apache 2, рейтинг github’а — 409. Лицензия совместима с закрытым ПО
  10. Netflix Zuul это сервис (edge service), обрабатывающий все запросы от всех устройств и вебсайтов к backend всех Netflix потоковых приложений, он обеспечивает динамическую маршрутизацию, мониторинг, отказоустойчивость и безопасность… Лицензия: Apache 2, рейтинг github’а — 407. Лицензия совместима с закрытым ПО
  11. PrimeFaces — JSF фреймворк который имеет как свободную, так и комерческую версию с полноценной поддержкой. Предоставляет несколько frontend компонентов, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  12. Spring Boot — Микрофреймворк для упрощения разработки новых Spring приложений, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  13. CSSEmbed это небольшая программ/библиотека для автоматического добавления URIs в CSS files. Лицензия: MIT, рейтинг github’а — 407. Лицензия совместима с закрытым ПО
  14. Athou commafeed RSS reader, основанный Dropwizard и AngularJS, вдохновленный Google Reader. Лицензия: Apache 2, рейтинг github’а — 1226. Лицензия совместима с закрытым ПО
  15. Apache Any23 Anything To Triples (Any23) это библиотека, вебсервис и консольный инструмент для отображения в RDF формате различных данных полученных из веб’а. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  16. Apache Forrest Apache Forrest это фреймворк для представления данных из разных форматов. Лицензия: Apache 2Лицензия совместима с закрытым ПО

Template Engine

 

Инструменты для замены выражений в шаблонах на реальные данные.

 

  1. Apache Velocity — Работает с шаблонами для генерации HTML страниц, emails или даже кодогенерация в целом, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  2. Apache FreeMarker — Библиотека поддережки универсальный шаблонов без тяжелых или запутанных зависимостей на другие библиотеки, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  3. Handlebars.java — Семантически подобен шаблонам Mustache, но с меньшим количеством бизнес логии в шаблонах, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  4. Thymeleaf — Цель заменять JSP и работать с XML файлами в целом, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  5. Mustache.java — портирование Mustache.js (систему создания и использования веб.шаблонов с минимальной бизнес логикой) для Java. Лицензия: Apache 2, рейтинг github’а — 733. Лицензия совместима с закрытым ПО
  6. Handlebars.java это портирование Handlebars на Java, Handlebars система работы с шаблонами Mustache. Лицензия: Apache 2, рейтинг github’а — 451. Лицензия совместима с закрытым ПО
  7. Apache Tiles Apache Tiles это templating фреймворк, упрощающий разработку веб приложений. Лицензия: Apache 2, рейтинг github’а — 451. Лицензия совместима с закрытым ПО

CMS и content management

 

  1. Apache Stanbol Программные компоненты для semantic content management. Лицензия: Apache 2, рейтинг github’а — 451. Лицензия совместима с закрытым ПО
  2. Apache JSPWiki Wiki движок на стандартных J2EE компонентах (Java, servlets, JSP). Лицензия: Apache 2, рейтинг github’а — 451. Лицензия совместима с закрытым ПО
  3. Apache Portals Движок создания надежного, полностью функционального портала для разных платформ и языко программироваия. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  4. Apache Roller Apache Roller это полностью функциональный, многопользовательский блог движок и сервер, подходящих для самых разных сайтов блогов. Лицензия: Apache 2, рейтинг github’а — 451. Лицензия совместима с закрытым ПО
  5. Apache Chemistry Apache Chemistry это открытая реализация спецификации Content Management Interoperability Services (CMIS) для обмена данными между различными CMS. Лицензия: Apache 2Лицензия совместима с закрытым ПО

3. Создания GUI

 

Библиотеки для создания интерфейс пользователя (кроме веб)

 

  1. JavaFX — Правопреемник Swing, Лицензия: Oracle, проприетарнаяПроприетарная лицензия
  2. Scene Builder — Визуальный инструмент разработки GUI для приложений JavaFX Лицензия: Oracle, проприетарнаяПроприетарная лицензия
  3. SWT — The Standard Widget Toolkit (SWT) это набор бибилиотек и инструментария для создания графических виджетов в платформе Java, Лицензия: Eclipse Public License v1.0Можно использовать в коммерческом закрытым ПО
  4. Lanterna — Легковесная библиотека, реализующая консольно-текстовый GUI, похожий на curses, Лицензия: LGPL 2.1Можно использовать в коммерческом закрытым ПО
  5. Gephi — Кросплатформенная система для визуализации, изменения и управления большими графами, Лицензия: GNU 3 или CDDL 1.0Не соместимая с закрытым ПО лицензия

4. Создание бизнес приложений

 

Фреймворки и библиотеки для создания бизнес приложений на Java
К оглавлению

 

  1. Codecademy EventHub — позволяет анализировать бизнес события, чтобы получать KPI, conversion rate и т. п. Бизнес метрики событий. Лицензия: MIT, рейтинг github’а — 1043. Лицензия совместима с закрытым ПО
  2. Killbill — свободная платформа билинга и проведения платежей. Лицензия: Apache 2, рейтинг github’а — 902. Лицензия совместима с закрытым ПО
  3. Activiti это легковесная система управления бизнес процессами (Business Process Management (BPM) Platform ). Лицензия: Apache 2, рейтинг github’а — 861. Лицензия совместима с закрытым ПО
  4. Liferay Portal это свободная вебплатформа для построения бизнес приложений. Лицензия: GNU Lesser 2.1, рейтинг github’а — 739. Лицензия совместима с закрытым ПО
  5. Broadleaf Commerce — eCommerce фреймворк для крупных предприятий, основанный на Spring. Лицензия: Apache 2, рейтинг github’а — 518. Лицензия совместима с закрытым ПО
  6. Droolsjbpm Drools это приложение Business Rules Management System (BRMS), которое реализует Business Rules Engine (BRE), механизма авторизации, управления правилами (rules), управление приложением (Drools Workbench) и плагин для разработки под Eclipse IDE… Лицензия: Apache 2, рейтинг github’а — 421. Лицензия совместима с закрытым ПО
  7. Spring Roo — фреймворк с открытым исходным кодом для быстрого создания бизнес-приложений на Java. Полученные в результате приложения используют общие технологии Java, такие как Spring Framework, Java Persistence API, JSP, Apache Maven и AspectJ. Spring Roo является частью проекта Spring… Лицензия: Apache 2, рейтинг github’а — 399. Лицензия совместима с закрытым ПО
  8. Apache OFBiz Apache OFBiz (The Apache Open For Business Project) это открытый и свободный фреймворк для автоматизации бизнес процессов больших предприятий, включает в себя компоненты ERP (Enterprise Resource Planning), CRM (Customer Relationship Management), E-Business / E-Commerce, SCM (Supply Chain Management), MRP (Manufacturing Resource Planning), MMS/EAM (Maintenance Management System/Enterprise Asset Management), POS (Point Of Sale). License: Apache 2business friendly license
  9. Apache Portals Движок создания надежного, полностью функционального портала для разных платформ и языко программироваия. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  10. Apache ODE Apache ODE это реализация WS-BPEL спецификации, которая позволяет описывать бизнес процессы и веб сервисы для создания enterprise приложений. Лицензия: Apache 2Лицензия совместима с закрытым ПО

5. Игровые фреймворки (Game Development)

 

К оглавлению

 

  1. libgdx Кросплатформенный фреймворк для разработки игр на основе OpenGL (ES), работает под Windows, Linux, Mac OS X, Android, iOS и в браузерах с WebGL. . Лицензия: Apache 2, рейтинг github’а — 6579. Лицензия совместима с закрытым ПО
  2. Disunity Экспериментальный набор инструментов для Unity asset и asset bundle files. Лицензия: unlicense.org, рейтинг github’а — 828.
    Лицензия совместима с закрытым ПО
  3. LibGDX/LWJGL lwjgl-basics это минималистская shader-based библиотека для создания 2D LWJGL sprite игр.https://libgdx.badlogicgames.com/. Лицензия: ?, рейтинг github’а — 656.
  4. jMonkeyEngine jMonkeyEngine это 3D игровой движок для Java разработчиков. http://jmonkeyengine.org/ Лицензия: BSD 3, рейтинг github’а — 624. Лицензия совместима с закрытым ПО
  5. Jetserver Jetserver высокоскоростной nio сокет Java сервер для multiplayer игр созданный используя Netty и Mike Rettig Jetlang. Лицензия: MIT, рейтинг github’а — 484. Лицензия совместима с закрытым ПО
  6. LWJGL 2.X LWJGL 2.X — Легковесная игровая библиотека на Java. http://www.lwjgl.org/ Лицензия: BSD 3, рейтинг github’а — 394. Лицензия совместима с закрытым ПО
  7. Ardor3D — 3D игровой движок построенный на jMonkeyEngine 2.0.
    Лицензия: zlibЛицензия совместима с закрытым ПО
  8. DimensioneX Multiplayer Engine — Игровой движок псевдо-3D броузерных игр. Известные игры: Underworld Online. Лицензия: GPL Не соместимая с закрытым ПО лицензия
  9. PlayN Игровой фреймворк для Java работающий на Windows, Linux, HTML5, Android и iOS. Известные игры: Angry Birds Chrome. Лицензия: Apache 2.0. github star — 97. Лицензия совместима с закрытым ПО
  10. Env3D — 3D игровой движок построенный на jMonkeyEngine 2.0. Лицензия: GPL Не соместимая с закрытым ПО лицензия
  11. Jake2 Java порт игрового движка Quake II. Лицензия: GPL Не соместимая с закрытым ПО лицензия
  12. Jogre — JOGRE (Java Online Gaming Real-time Engine) открытый, онлайн, движок реального времени с API работающим только на Java. Лицензия: GPL Не соместимая с закрытым ПО лицензия
  13. Elflight Engine — платный движок для веб игр. Лицензия: Proprietary proprietary license

6. Полезные библиотеки

 

К оглавлению

Коллекции, структуры данных и методы работы с ними

 

  1. Google Guava Очень популярная библиотека от гугла, расширяющая возможности JDK, в том числе добавляющая новые коллекции и методы работы с ними. Работает с JDK1.6 и выше.. Лицензия: Apache 2, рейтинг github’а — 3813. Лицензия совместима с закрытым ПО
  2. Apache Commons Collections — Реализует различные дополнительный коллекции и метода работы с ними. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  3. Gs collections Дополнение или замена стандартных Java коллекций и методов работающих с коллекциями. Переименована в Eclipse Collections. Лицензия: Apache 2, рейтинг github’а — 1201. Лицензия совместима с закрытым ПО
  4. Eclipse Collections (в прошлом Gs collections). Дополнение или замена стандартных Java коллекций и методов работающих с коллекциями. Лицензия: Eclipse Public 1.0., рейтинг github’а — 1201. Лицензия совместима с закрытым ПО
  5. javatuples — Кортежи (Tuples), Лицензия: Apache 2Лицензия совместима с закрытым ПО
  6. Immutables — Добавлет Scala-подобные классы, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  7. OpenHFT Chronicle Queue Chronicle Queue работает так же как обычная Java очередь, однако каждое события сохраняется на жесткий диск. Лицензия: GNU Lesser 3.0, рейтинг github’а — 440. Лицензия совместима с закрытым ПО
  8. fastutil — Быстрые и компактные типобезопасные коллекции, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  9. HPPC — Фреймворк по работе с примитивными коллекциями, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  10. Koloboke — Фреймворк по работе с быстрыми Hash sets и hash maps, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  11. Trove — Библиотека работы с примитивными коллекциями, Лицензия: GNU Lesser 2.1Лицензия совместима с закрытым ПО

Date and Time

 

  • Библиотеки для обработки даты и времени.*
    1. Almanac Converter — простые преобразования между различными календарными системами, Лицензия: Apache 2Лицензия совместима с закрытым ПО
    2. Joda-Time — Joda Time это широко распространенная замена стандартных классов date и time в Java. Де факто стандартная библиотеки даты и времени до появления Java 8, Лицензия: Apache 2, рейтинг github’а — 1442. Лицензия совместима с закрытым ПО
    3. ThreeTenBP — Порт с JSR 310 (java.time package) от автора Joda-Time, Лицензия: BSD 3Лицензия совместима с закрытым ПО
    4. Time4J — Продвинутая бибилоека работы с датой и временем, Лицензия: GNU Lesser 2.1Лицензия совместима с закрытым ПО
    5. Ocpsoft Prettytime PrettyTime это библиотека форматирования Java date в выражение на натуральном языке и в формате принятом в социальных сетях (Digg, Twitter, and Facebook) и более чем на 30 человеческих языках. Лицензия: Apache 2, рейтинг github’а — 394. Лицензия совместима с закрытым ПО

Dependency Injection и AОП фреймворки

 

Бибилиотеки и фреймворки, которые реализуют парадигму Inversion of Control.

 

  1. [Spring Framework](https://github.com/spring-projects/spring-framew ork) Spring — наверное, самый распространенный фреймворк Java в мире, которые в том числе реализует Dependency Injection. Лицензия: Apache 2, рейтинг github’а — 5921. Лицензия совместима с закрытым ПО
  2. Dagger и Dagger2 Быстрый и легковесный фреймворк для реализации dependency injector для Android и Java, работающий во время компиляции, а не во времени выполнения, и не использующий рефлексию. Реализует Java спецификацию JSR-330, описывающую dependency injector. Лицензия: Apache 2, рейтинг github’а — 3607, на stackoverflow — 800 вопросовМожно использовать в коммерческом закрытым ПО
  3. Google Guice — Guice (произносится ‘juice’) это легковесный dependency injection фреймворк для Java 6 и выше, созданный Google. Легкий, но мощный фреймворк, из которого получился Dagger. Лицензия: Apache 2, рейтинг github’а — 1881. Лицензия совместима с закрытым ПО
  4. Apache DeltaSpike — фреймворк, расширяющий CDI, Лицензия: Apache 2 Лицензия совместима с закрытым ПО
  5. HK2 — Легкий и динамичный dependency injection фреймворк, GNU 2CDDL 1.0Не соместимая с закрытым ПО лицензия
  6. AspectJ — Аспект-ориентированное расширение, легко встраиваемое в существующие приложения, Лицензия: Eclipse Public 1.0Лицензия совместима с закрытым ПО

Работа с консолью и командной строкой

 

  1. jcommander Библиотека для парсинга параметров командных строк. http://jcommander.org/ Лицензия: Apache 2, рейтинг github’а — 445. Лицензия совместима с закрытым ПО
  2. Jline это java библиотека для работы с консолью (ввод, редактирование в emacs и vi режимах), так же как библиотеки Readline и Editline, однако при этом так как Jline почти полностью написана на Java является полностью платформонезависимой… Лицензия: BSD 4, рейтинг github’а — 396. Лицензия совместима с закрытым ПО
  3. args4j — Парсер командной строки, Лицензия: MITЛицензия совместима с закрытым ПО
  4. CRaSH — Реализует интерпретатор командной строки (CLI) для запущенныз процессов, Лицензия: GNU Lesser 2.1Лицензия совместима с закрытым ПО

Функциональное программирование

 

  • Библиотеки, реализующие функциональное программирование.*

 

  1. Cyclops — Добавляет монады, потоковые утилиты и такие возможности функционального программирования как: comprehensions, pattern matching, trampolines и многое другое, Лицензия: MITЛицензия совместима с закрытым ПО
  2. derive4j — Процессор, работающий с Java 8 аннотациями, и фреймворк для реализации: deriving algebraic data types constructors, pattern-matching, morphisms и т.п, Лицензия: GNU 3Не соместимая с закрытым ПО лицензия
  3. Fugue — Функциональное расширение библиотеки Guava, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  4. Functional Java — Добавление функционального программирования в Java. Реализует большое количество простых и сложных видов абстракций для composition-oriented программирования, Лицензия: BSD 3, рейтинг github’а — 478. Лицензия совместима с закрытым ПО
  5. Javaslang — Библиотека для реализации функцуонального программирования которая реализаует persistent типы данных и functional control структоры, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  6. jOOλ — Расширение для Java 8, которое стремиться исправить недоработки стандартной реализации лямбда в Java 8, реализующе большое количество нереализованных возможностей функционального программирования и предоставляет богатый набор возможностей к стандартному Stream API, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  7. Retrolambda Поддержка лямба выражений из Java 8 в Java 7, 6 и 5. Лицензия: Apache 2, рейтинг github’а — 1059. Лицензия совместима с закрытым ПО
  8. TotallyLazy Библиотека функционального программирования для работы с ленивыми структурами данных (например, такими как Clojure’s), в частности с последовательностями (map, filter, fold/reduce…), есть Option, Either, Hamcrest matchers as predicates, ML family of function / method names (Standard ML, oCaml, F#, Scala, Haskell) и т.д., Лицензия: Apache 2, рейтинг github’а — 76. Лицензия совместима с закрытым ПО

Реактивное программирование

 

Библиотеки для разработки reactive приложений.

 

  1. ReactiveX RxJava библиотека для реализации асинхронного и событийного программирования на основе расширения паттерна Observer для разных языков от ReactiveX.. Лицензия: Apache 2, рейтинг github’а — 6279, на stackoverflow — 1814 вопросовМожно использовать в коммерческом закрытым ПО
  2. Eclipse Vert.x Событийно-ориентированный полиглотный фреймворк для JVM от Eclipse, позволяет писать одновременно на JavaScript, Ruby, Groovy, Java и Python, встраивается в текущие проекты на Java, упрощает мультипоточность. содержит event bus и т.д. и т.п. . Лицензия:  Eclipse Public 1 / Apache 2, рейтинг github’а — 3743, на stackoverflow — 728 вопросовМожно использовать в коммерческом закрытым ПО
  3. Reactive Streams — Реализует стандарт для асинхронной потоковой обработки без проблем с блокировками. Лицензия: Public Domain (CC0), рейтинг github’а — 769. Лицензия совместима с закрытым ПО
  4. Reactor — Библиотеки для разработки reactive fast-data приложений. Reactor это полнофункциональная библиотека для разработки быстрых data-driven приложений на JVM. Она предоставляет абстракции для Java, Groovy, Clojure и других JVM языков для создания и обработки событий (event) и простой разработки data-driven приложений. Лицензия: Apache 2Лицензия совместима с закрытым ПО

Безопасность и авторизация

 

К оглавлению

 

  1. Scribe Java — простая OAuth библиотека для Java. Лицензия: MIT, рейтинг github’а — 2731. Лицензия совместима с закрытым ПО
  2. Spring security oauth — добавлении методов авторизации OAuth1(a) и OAuth2 для Spring вебприложений… Лицензия: Apache 2, рейтинг github’а — 916. Лицензия совместима с закрытым ПО
  3. Jasig CAS (Central Authentication Service) — обеспечивает стандартный механизм аутентификация пользователей для веб приложений. Лицензия: Apache 2, рейтинг github’а — 740. Лицензия совместима с закрытым ПО
  4. Spring security — Spring фреймворк для авторизации и управлению пользователями и безопасностью приложений. Лицензия: Apache 2, рейтинг github’а — 732. Лицензия совместима с закрытым ПО
  5. Play Authenticate — аутентификацонный плагин для Play фреймворка. Лицензия: Apache 2, рейтинг github’а — 646. Лицензия совместима с закрытым ПО
  6. Apache Shiro — Обеспечивает аутентификацию, авторизацию, шифрование и управление сеансами, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  7. Bouncy Castle — Универсальная криптографическая библиотека, содержит JCA провайдер, широкий спектр функций по работе с PGP/SMIME, Лицензия: MITЛицензия совместима с закрытым ПО
  8. Cryptomator — Мультиплатформенное клиент-ориентирование шифрование файлов в облаке, Лицензия: MITЛицензия совместима с закрытым ПО
  9. Google Keyczar — Легкий в использовании, но безопасный фреймворк шифрования с управлением версиями, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  10. Keycloak — Интеграция с SSO и IDM, как для приложений, работающих в браузере, так и для RESTful веб сервисов, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  11. PicketLink — Umbrella проект для обеспечения безопасности и индетификации пользователей, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  12. Santuario Библиотека реализующая XML Digital Signature спецификацию и XML Encryption спецификацию. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  13. Apache Oltu Реализация OAuth протокола для Java. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  14. Apache Syncope Apache Syncope это открытая система для управления цифровыми идентификторами в enterprise приложениях. Лицензия: Apache 2Лицензия совместима с закрытым ПО

Высокая производительность

 

Все для высокопроизводительных решенией от коллекций до специальных библиотек.
К оглавлению

 

  1. Agrona — Структуры данных и функции, которые будут полезны для высоконагруженных приложений, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  2. Disruptor — библиотека, обеспечивающая межпоточный обмен сообщениями, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  3. fastutil — Быстрые и компактные типобезопасные коллекции, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  4. GS Collections — Фреймворк коллекций основанный на идеях из Smalltalk, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  5. HPPC — Фреймворк по работе с примитивными коллекциями, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  6. Javolution — Библиотека для систем реального времени и встроенных систем, Лицензия: BSD 2Лицензия совместима с закрытым ПО
  7. JCTools — Набор функций по работе с многопоточности, которые на данный момент отсутствуют в JDK, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  8. Koloboke — Фреймворк по работе с быстрыми Hash sets и hash maps, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  9. Trove — Библиотека работы с примитивными коллекциями, Лицензия: GNU Lesser 2.1Лицензия совместима с закрытым ПО

Сериализация (serializer) и работа с файлами (I/O)

 

К оглавлению

 

  1. Square Okio Современный I/O API для Java. Лицензия: Apache 2, рейтинг github’а — 1243. Лицензия совместима с закрытым ПО
  2. Square type Легкий, быстрый, транзакционный, файловый FIFO для Android и Java… Лицензия: Apache 2, рейтинг github’а — 1073. Лицензия совместима с закрытым ПО
  3. Simple Binary Encoding (SBE) это реализация кодирования и декодирования сообщений приложения бинарный формат для систем требующих очень быстрое время ответа. Лицензия: Apache 2, рейтинг github’а — 612. Лицензия совместима с закрытым ПО
  4. MessagePack — реализация быстрой сериализации в компактный бинарный формат для Java. Лицензия: Apache 2, рейтинг github’а — 448. Лицензия совместима с закрытым ПО
  5. FlatBuffers — Библиотека сериализации, оптимизированная на сокращение затрат памяти, которая предоставляет доступ к сериализованным данным без разархивирования и парсинга, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  6. FST — JDK совместимая высокопроизводительная библиотека сериализации, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  7. Kryo — Быстрый и эффекстивный фреймворк сериализации, Лицензия: BSD 3Лицензия совместима с закрытым ПО

Логирования

 

К оглавлению

 

  1. Graylog2 server свободная и открытая система логирования. Лицензия: GNU 3, рейтинг github’а — 1308. Не соместимая с закрытым ПО лицензия
  2. logback надежный, универсальный, быстрый и гибкий фреймворк для логировани в Java. http://logback.qos.ch/. Лицензия: Eclipse Public 1.0/GNU Lesser 2.1, рейтинг github’а — 497. Лицензия совместима с закрытым ПО
  3. slf4j Библиотека предлагает Facade логирования для простого переключения между разными библиотеками логирования (java.util.logging, logback, log4j и т. п.). http://www.slf4j.org/ Лицензия: MIT, рейтинг github’а — 384. Лицензия совместима с закрытым ПО
  4. Apache Log4j 2 — Полностью пересмотренная вторая версия Log4j с мощными плагинами и легко настраиваемой архитектурой, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  5. graylog — Открытый агрегатор, подходящий для сложных ролей пользователей и системы привилегий, Лицензия: GNU 3Не соместимая с закрытым ПО лицензия
  6. Elastic Kibana — Анализ и визуализация логов, некоторые возможносте предоставляются только платно, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  7. Elastic Logstash — Инструменты для управления файлами логов, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  8. Metrics — Собирает метрики через JMX или HTTP и может записать их в базу, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  9. tinylog — Легкий фреймворк логировани со статическими классами логирования, Лицензия: Apache 2Лицензия совместима с закрытым ПО

Bean Mapping and Validation

 

Фреймворки, упрощающие маппинг одних типов данных в другие (или bean validation).
К оглавлению

 

  1. Dozer — Маппер, который копирует информацию из одного объекта в другой (создавая рекурсивную копию одного объекта в другом) используя аннотации, API или XML конфигурацию, Лицензия: Apache 2, рейтинг github’а — 421. Лицензия совместима с закрытым ПО
  2. MapStruct — Код генератор, который упрощает маппинг между разными типами данных, основываясь на конфигурации маппинга, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  3. ModelMapper — ModelMapper это интеллектуальная библиотека для автоматического маппинга одних объектов на другие, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  4. Orika — Orika это Java Bean маппинг фреймворк, который рекурсивно копирует (и при необходимости изменяет) информацию из одного объекта в другой, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  5. Selma — Stupid Simple Statically Linked Mapper. Selma это маппер построенный на аннотациеях классов, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  6. Apache BVal Apache BVal реализует спецификацию Java Bean Validation (JSR303). Лицензия: Apache 2Лицензия совместима с закрытым ПО

7. Изображения и Видео

 

К оглавлению

 

  1. Facebook Rebound Это Java библиотека которая моделирует поведение физики реального мира в вашем приложении. Лицензия: BSD, рейтинг github’а — 2219. Лицензия совместима с закрытым ПО
  2. Processing Исходный код для Processing Development Environment (PDE) — программному языку для обработки видео и графики. Лицензия: GNU 2, рейтинг github’а — 1896. Не соместимая с закрытым ПО лицензия
  3. JavaCV JavaCV использует конвертер Java-C++ JavaCPP Presets для простого использования библиотек для работы с компьютерным зрением (OpenCV, FFmpeg, libdc1394, PGR FlyCapture, OpenKinect, videoInput, ARToolKitPlus, and flandmark) и реализует классы-утилиты для облегчения работы с этими библиотеками на платформе Java. Лицензия: Apache 2, рейтинг github’а — 503. Лицензия совместима с закрытым ПО
  4. imgscalr Простая и эффективная библиотека Java для масштабирования изображений основанная на чистом Java 2D. Лицензия: Apache 2, рейтинг github’а — 451. Лицензия совместима с закрытым ПО
  5. webcam-capture Данный проект позволяет получить доступ к USB вебкамере или remote IP / сетевой камере напрямую из Java кода. Лицензия: MIT, рейтинг github’а — 437. Лицензия совместима с закрытым ПО
  6. Thumbnailator — Thumbnailator это библиотека генерации высококачественных миниатюр для Java.
  7. zxing открытая разноформатная библиотека для обработки 1D/2D barcode изображений с реализацией на Java и портированием на другие языки. Лицензия: Apache 2, рейтинг github’а — 5314. Лицензия совместима с закрытым ПО

8. Кодогенерация и изменения байт кода

 

Libraries to manipulate bytecode programmatically.
К оглавлению

 

  1. Google Auto — коллекция генераторов исходного кода в Java… Лицензия: Apache 2, рейтинг github’а — 1442. Лицензия совместима с закрытым ПО
  2. Square Javapoet — библиотека для генерации исходных кодов классов Java. Лицензия: Apache 2, рейтинг github’а — 1057. Лицензия совместима с закрытым ПО
  3. Byte buddy — динамическая генерация кода в Java платформе. http://bytebuddy.net/ Лицензия: Apache 2, рейтинг github’а — 473. Лицензия совместима с закрытым ПО
  4. ASM — Универсальная, низкоуровневая библиотека для изменения байткода и анализа, Лицензия: BSD 3, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  5. Byteman — Изменение байткода во время выполнения используя DSL правила в основном для целей тестирования и отладки, Лицензия: LGPL 2.1Лицензия совместима с закрытым ПО
  6. Javassist — Попытка упростить редактирование байткода,, Лицензия: Apache 2 or LGPL or later 2.1 or Mozilla Public License 1.1.Лицензия совместима с закрытым ПО
  7. ADT4J — JSR-269 код генератор для algebraic data types, Лицензия: BSD 3Лицензия совместима с закрытым ПО
  8. Auto — Коллекция генераторов исходного кода, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  9. JHipster — генератор кода, которые позволяет создавить приложения основанные на Spring Boot и AngularJS, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  10. cglib — Библиотека генерации байткода, Лицензия: Apache 2Можно использовать в коммерческом закрытым ПО

9. Фреймворки для создания распределенных и отказоустойчивых приложений

 

Библиотеки и фреймворки для создания распределенных и отказоустойчивых приложений.
К оглавлению

 

  1. Akka — Набор инструментов и среда выполнения для создания многопоточных, распределенных и устойчивых к ошибкам событийно-ориентированных приложений, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  2. Apache Storm — Система вычислений в режиме реального времени, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  3. Apache ZooKeeper — Системы координации для развертывания конфигураций, синхроизации и регистрации имен для больших распределенных систем, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  4. Alibaba Dubbo Dubbo это фреймворк для разработки распределенных приложений с возможностями передачи сообщений, кластеризации, работе с событиями, подписками и т. п. с высокопроизводительным RPC. Лицензия: Apache 2, рейтинг github’а — 1917. Можно использовать в коммерческом закрытым ПО
  5. Netflix Curator Curator Framework это фреймворк для работы с Apache ZooKeeper сервером. Лицензия: Apache 2, рейтинг github’а — 1158. Можно использовать в коммерческом закрытым ПО
  6. Axon Framework — Фреймворк для создания CQRS приложений, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  7. Hazelcast — Легко расширяемый in-memory datagrid, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  8. Netflix Hystrix — Предоставляет возможность создавать системы, устойчивые к ошибкам и с минимальным откликом. Библиотека, для корректной обработки отказов сервисов, исключительных ситуаций в распределенных системах, с помощью добавления в систему изолированных точек доступа к сторонним сервисам и распределенным системам, ограничением вероятности каскадных ошибок при отказе одного из сервисов и т.д., рейтинг github’а — 3571. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  9. JGroups — Набор инструментов для надежного обмена сообщениями и создания кластеров, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  10. Orbit — Виртуальные акторы (Virtual Actors), добавления дополнительного уровня абстракции к традиционных акторам, Лицензия: BSD 3Лицензия совместима с закрытым ПО
  11. Quasar — Легковесные потоки и акторы (actors) для JVM, Лицензия: Eclipse Public License v1.0 или LGPL 3.0Лицензия совместима с закрытым ПО
  12. Storm contrib storm-contrib это свободный репозиторий с модулями, использующими Storm. Они включают разные spouts/bolts для интеграции с другими системами (Redis, Kafka, MongoDB, etc), и код для решений типовых задач Storm разработчиков… Лицензия: Eclipse Public 1.0, рейтинг github’а — 504. Можно использовать в коммерческом закрытым ПО
  13. JADE — Фреймворк и экосистема для разработки и отладки multi-agent систем, Лицензия: GNU Lesser 2.0Лицензия совместима с закрытым ПО
  14. Apache River Apache River фреймворк для разработки JINI сервисов. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  15. Apache Tuscany Apache Tuscany это фреймворк для разработки Service Component Architecture (SCA) приложений. Лицензия: Apache 2Лицензия совместима с закрытым ПО

10. Наука

 

Библиотеки для научных расчетов и анализа.
К оглавлению

 

  1. DataMelt — Среда для научных расчетов, анализа и визуализаци данных, Лицензия: GNU 3Не соместимая с закрытым ПО лицензия
  2. JGraphT — Графическая библиотека, которая предоставляет объект и алгоритмы из математической теории графов, Лицензия: Eclipse Public License или LGPL 2.1Лицензия совместима с закрытым ПО
  3. JScience — Предоставляет набор классов для работы с научными измерениями и объектами, Лицензия: BSD 2Лицензия совместима с закрытым ПО
  4. Michael Thomas Flanagan’s Java Scientific Library коллекция классов и библиотек для научных целей написанных Michael Thomas Flanagan. Лицензия: только для некомерческого использования, без права распостраненния исходного кода.

11. OSGI

 

  1. ACE — distribution фреймворк для OSGi систем и не только. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  2. Aries данный проект состоит из набора pluggable Java компонент для OSGi модели. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  3. Felix OSGi фреймворк. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  4. Karaf OSGi фреймворк для серверных приложений. Лицензия: Apache 2Лицензия совместима с закрытым ПО

II. Базы данных, поисковые системы, Big data и машинное обучение

1. Базы данных и хранилища

 

К оглавлению

 

  1. Thinkaurelius Titan — распределенная графическая база данных. Лицензия: Apache 2, рейтинг github’а — 2846. Лицензия совместима с закрытым ПО
  2. Apache Cassandra — зеркало для Apache Cassandra — база данных с высокой доступностью и высокой расширямостью и отличной производительностью. Лицензия: Apache 2, рейтинг github’а — 2155. Лицензия совместима с закрытым ПО
  3. Orientdb это первая база данных с множественной моделью и поддержкой и документного хранилища и графов. Лицензия: Apache 2/CDDL 1/Eclipse Distribution 1.0, рейтинг github’а — 1880. Лицензия совместима с закрытым ПО
  4. Neo4j — одна из самых популярных в мире графических баз данных. Лицензия: GNU 3GNU AGPLv3, рейтинг github’а — 1787. Не соместимая с закрытым ПО лицензия
  5. Mapdb содержит мультипоточные реализации Maps, Sets и Queues, которые могут сохраняться на жестком диске или в off-heap-memory. Это быстрый и простой способ создать embedded Java базу данных. http://www.mapdb.org/. Лицензия: Apache 2, рейтинг github’а — 1484. Лицензия совместима с закрытым ПО
  6. Voldemort свободный клон Amazon’s Dynamo, распределенное key-value хранилище. Лицензия: Apache 2, рейтинг github’а — 1480. Лицензия совместима с закрытым ПО
  7. Amplab Tachyon это распределенное хранилище, ориентированное на работу с оперативной памятью и разделении данных между кластерами. Лицензия: Apache 2, рейтинг github’а — 1459. Лицензия совместима с закрытым ПО
  8. Opentsdb это распределенная и масштабируемая база данных, работающих с временными рядами (Time Series Database TSDB) работающая поверх Hbase. Лицензия: GNU 3, рейтинг github’а — 1336. Не соместимая с закрытым ПО лицензия
  9. Hazelcast Hazelcast свободное In-Memory хранилище. Лицензия: Apache 2, рейтинг github’а — 1167. Лицензия совместима с закрытым ПО
  10. Tinkerpop Blueprints Добавление Blueprint Property Graph Model Interface в различные графические базы данных. Лицензия: BSD 3, рейтинг github’а — 1083. Лицензия совместима с закрытым ПО
  11. Apache Lucene solr Зеркало Apache Lucene & Solr — тестового поисковой движка. Лицензия: Apache 2, рейтинг github’а — 1069. Лицензия совместима с закрытым ПО
  12. Java Chronicle Java Indexed Record Chronicle — библиотека, хранения данных, работы с сообщениями и событиями.. Лицензия: Apache 2, рейтинг github’а — 970. Лицензия совместима с закрытым ПО
  13. Torodb ToroDB база данных. Лицензия: GNU AGPLv3, рейтинг github’а — 951. Не соместимая с закрытым ПО лицензия
  14. Crate CRATE: Your Elastic Data Store — распределенная система, создающая бэкенд (или кластер) на основе nosql баз данных и свободных компонент (Presto, Elasticsearch, Lucene, Netty), реализует синхронизацию, репликацию, маштабируемость и разделение данных (data synchronization, sharding, scaling, and replication). Также предоставляем sql подобный язык запросов для кластера. https://crate.io/.Лицензия: Apache 2, рейтинг github’а — 925. Лицензия совместима с закрытым ПО
  15. Linkedin Pinot Linkedin pinot — Распределенный OLAP хранилище, работающее в режиме реального времени, которое используется Linkedin для получение аналитических данных в режиме реального времени… Лицензия: Apache 2, рейтинг github’а — 854. Лицензия совместима с закрытым ПО
  16. Solandra Solandra — распределенный real-time поисковый движок построенный на основе Apache Solr и Apache Cassandra… Лицензия: Apache 2, рейтинг github’а — 808. Лицензия совместима с закрытым ПО
  17. Voltdb VoltDB это горизонтально масштабируемая in-memory SQL RDBMS база данных, разработанная для приложений которым требует особенно высокая пропускная способность базы данных на чтение и запись. Лицензия: GNU AGPLv3, рейтинг github’а — 586. Не соместимая с закрытым ПО лицензия
  18. Leveldb Портирование LevelDB на Java. LevelDB это быстрое key-value хранилище, разработанное Google. Лицензия: Apache 2, рейтинг github’а — 525. Лицензия совместима с закрытым ПО
  19. Kairosdb KairosDB — быстрая распределенная расширяемая time series база данных, написанная поверх Cassandra.. Лицензия: Apache 2, рейтинг github’а — 485. Лицензия совместима с закрытым ПО
  20. Linkedin Sensei Распределенная поисковая база данных для работы в реальном времени. Лицензия: Apache 2, рейтинг github’а — 464. Лицензия совместима с закрытым ПО
  21. Elephantdb Распределенная база данных, специализирующая на экспорте key/value данных из Hadoop. Лицензия: BSD 3, рейтинг github’а — 464. Лицензия совместима с закрытым ПО
  22. Apache Drill Зеркало Apache Drill. Без схемовый движок обработки SQL запросов для Hadoop, NoSQL и облачных сервисов. Лицензия: Apache 2, рейтинг github’а — 448. Лицензия совместима с закрытым ПО
  23. Tinkerpop Rexster это сервер графических баз данных, который может передать любые данные графов через REST и бинарный протокол, называемый RexPro.. Лицензия: BSD 3, рейтинг github’а — 402. Лицензия совместима с закрытым ПО
  24. Tomcat redis session manager Основанное на Redis простое хранилище сессий для Apache Tomcat. Лицензия: MIT, рейтинг github’а — 396. Лицензия совместима с закрытым ПО
  25. Embulk это открытый пакетный (bulk) загрузчик данных, который помогает трансформировать данные между разными базами данных, хранилищ, файловых форматов и облачных сервисов. Лицензия: Apache 2, рейтинг github’а — 394. Лицензия совместима с закрытым ПО
  26. H2 — Небольшая база данных SQL отличается работой в in-memory, Лицензия: Mozilla Public License 1.1. и Eclipse Public License v1.0Лицензия совместима с закрытым ПО
  27. Apache Empire-db Apache Empire-db is a lightweight relational database abstraction layer and data persistence component. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  28. Apache Ignite Apache Ignite is an In-Memory Data Fabric providing in-memory data caching, partitioning, processing, and querying components. Лицензия: Apache 2Лицензия совместима с закрытым ПО

 

Распределенные базы данных.

 

  1. Apache Cassandra — зеркало для Apache Cassandra — база данных с высокой доступностью и высокой расширямостью и отличной производительностью. Лицензия: Apache 2, рейтинг github’а — 2155. Лицензия совместима с закрытым ПО
  2. Apache HBase — Hadoop хранилище для больших данных. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  3. Druid — это column-oriented хранилище и система обработки в реальном времени для обработки потоковых и пакетной информации и интегрированная с Samza, Kafka, Storm, and Hadoop. Лицензия: Apache 2, рейтинг github’а — 1846. Лицензия совместима с закрытым ПО
  4. Infinispan — Высокопроизводительное key/value хранилише, используемое для кэширования. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  5. OpenTSDB — это распределенная и масштабируемая база данных, работающих с временными рядами (Time Series Database TSDB) работающая поверх Hbase. Лицензия: GNU 3, рейтинг github’а — 1336. Не соместимая с закрытым ПО лицензия

2. Структуры данных

 

Efficient and specific data structures.

 

  1. Apache Avro — Формат обмена данными с такими возможностями как: динамическая типизация, отсутствия необходимости устанавливать ID вручную, untagged data, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  2. Apache Orc — Быстрый и эффективный столбчатый (сolumnar) формат хранения данных для работы в основанных на hadoop системах, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  3. Apache Parquet — столбчатый (сolumnar) формат хранения данных основанный на использовании алгоритмов из «Dremel paper» от Google, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  4. Apache Thrift — Формат обмена данными, созданный в Facebook, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  5. Persistent Collection — Persistent и неизменямый аналог Java Collections Framework, Лицензия: MITЛицензия совместима с закрытым ПО
  6. Protobuf — Формат обмена данными, предложенный Google, Лицензия: BSD 3Лицензия совместима с закрытым ПО
  7. SBE — Simple Binary Encoding, один из самых быстрых форматов обмена сообщениями, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  8. Wire — Чистый, легковесный protocol buffers, Лицензия: Apache 2Лицензия совместима с закрытым ПО

3. Поисковые системы

 

К оглавлению

 

  1. Elasticsearch — одна из самых популярных систем распределенного облачного поиска. Распределенная, mультиарендная (multitenant-capable) полнотекстовая поисковая система с RESTful веб интерфейсом, не требующая схемы данных, основанная на JSON документах.. Лицензия: Apache 2, рейтинг github’а — 11833. Лицензия совместима с закрытым ПО
  2. Linkedin Indextank Engine Проект IndexTank это поисковый движок, поддерживающий возможности вроде переменных (boosts), категорий (facets), предложения, автокомплит и т. п… Лицензия: Apache 2, рейтинг github’а — 788. Лицензия совместима с закрытым ПО
  3. Apache Solr Зеркало Apache Solr. Apache Solr это поисковый сервер, основанный на Apache Lucene поисковой библиотеке, данный поисковый движок оптимизирован для высоконагруженных систем.. Лицензия: Apache 2, рейтинг github’а — 486. Лицензия совместима с закрытым ПО
  4. Linkedin Cleo Linkedin Cleo это гибкое библиотека для создания умных подсказок поиска… Лицензия: Apache 2, рейтинг github’а — 478. Лицензия совместима с закрытым ПО
  5. Elasticsearch cloud aws Плагин для работы ElasticSearch с Amazon Web Service (AWS) облаками. Лицензия: Apache 2, рейтинг github’а — 435. Лицензия совместима с закрытым ПО
  6. Elasticsearch analysis ik The IK Analysis плагин интеграции с Lucene IK анализаторов для elastic search, поддерживающий пользовательские словари. Лицензия: ?, рейтинг github’а — 395.
  7. Apache ManifoldCF — приложение для передачи данных между репозиториями и поисковыми индексами разных систем. Лицензия: Apache 2, рейтинг github’а — 435. Лицензия совместима с закрытым ПО
  8. Lemur Project Lemur проект разрабоатывает поисковый движок, анализатор текста, плагин браузеров, включает Indri search engine и ClueWeb09 dataset. Лицензия: BSD License Лицензия совместима с закрытым ПО

4. Клиенты и драйверы баз данных

 

К оглавлению

 

  1. Facebook Presto Библиотека для работы с распределенными SQL запросами к big data источникам (Cassandra, Hive, Kafka, MySQL, PostgreSQL и т.п.). . Лицензия: Apache 2, рейтинг github’а — 3603. Лицензия совместима с закрытым ПО
  2. Jedis Невероятно маленький и эффективный Redis Java клиент. Лицензия: MIT, рейтинг github’а — 2495. Лицензия совместима с закрытым ПО
  3. Tinkerpop Gremlin это язык для работы с графами и разными графическими базами данных (обхода графов, запросы к графам, манипуляции и т. п.)… Лицензия: BSD 3, рейтинг github’а — 1370. Лицензия совместима с закрытым ПО
  4. Mongodb Java Driver Java клиент для MongoDB. Лицензия: Apache 2 / Creative Commons Attribution, рейтинг github’а — 1276. Лицензия совместима с закрытым ПО
  5. Yahoo Mysql_perf_analyzer Анализатор производительности MySQL. Лицензия: Apache 2, рейтинг github’а — 1082. Лицензия совместима с закрытым ПО
  6. Airbnb Airpal Веб UI для PrestoDB. Лицензия: Apache 2, рейтинг github’а — 1074. Лицензия совместима с закрытым ПО
  7. Mongodb hadoop MongoDB клиент для интеграции с Hadoop. Лицензия: ?, рейтинг github’а — 937.
  8. Elasticsearch jdbc JDBC поддержка для Elasticsearch. Лицензия: Apache 2, рейтинг github’а — 867. Лицензия совместима с закрытым ПО
  9. Flyway — инструмент по миграции баз данных. http://flywaydb.org/. Лицензия: Apache 2, рейтинг github’а — 851. Лицензия совместима с закрытым ПО
  10. Elasticsearch river mongodb — MongoDB River Plugin для ElasticSearch, использует MongoDB как хранилище для ElasticSearch. Лицензия: Apache 2, рейтинг github’а — 794. Лицензия совместима с закрытым ПО
  11. Netflix Astyanax Cassandra Java клиент. Лицензия: Apache 2, рейтинг github’а — 735. Лицензия совместима с закрытым ПО
  12. Liquibase Liquibase — система, позволяющая проводить миграции и обновления баз данных, генерировать SQL скрипты, документацию изменений баз данных, проводить рефакторинг и т. д. http://www.liquibase.org/. Лицензия: Apache 2, рейтинг github’а — 734. Лицензия совместима с закрытым ПО
  13. Mongodb Morphia Библиотека для простой сериализации объектов Java в документы MongoDB. Лицензия: Apache 2, рейтинг github’а — 725. Лицензия совместима с закрытым ПО
  14. Couchdb lucene Полнотекстовый поиск CouchDB документов, используя Lucene. Лицензия: Apache 2, рейтинг github’а — 639. Лицензия совместима с закрытым ПО
  15. Forcedotcom Phoenix Phoenix это SQL оболочка поверх Hbase с JDBC драйвером. Phoenix обеспечивает очень быстрый отклик (в течении миллисекунд), в отличии от пакетных операций map/reduce. Лицензия: BSD 3, рейтинг github’а — 507. Лицензия совместима с закрытым ПО
  16. Variety Анализатор схемы MongoDB. Лицензия: MIT, рейтинг github’а — 505. Лицензия совместима с закрытым ПО
  17. Redisson Redisson — добавляет Java структуры данных (Set, SortedSet, Map, ConcurrentMap, List, Queue, BlockingQueue, Deque, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, HyperLogLog, Redis pipelining) в Redis сервер. И является высокопроизводительным и неблокирующим Java Redis клиентом. Лицензия: Apache 2, рейтинг github’а — 483. Лицензия совместима с закрытым ПО
  18. Netflix Priam Co-Process это набор инструментов для работы с Cassandra (архимирование и востановление, работа с токенами и т. д.). Лицензия: Apache 2, рейтинг github’а — 481. Лицензия совместима с закрытым ПО
  19. Datastax Java driver Java клиент для Apache Cassandra и DataStax. Лицензия: Apache 2, рейтинг github’а — 480. Лицензия совместима с закрытым ПО
  20. Memcached Java Client java клиент для memcached. Лицензия: BSD 4, рейтинг github’а — 436. Лицензия совместима с закрытым ПО
  21. Spring data mongodb Java клиент к MongoDB для фреймворка Spring. Лицензия: Apache 2, рейтинг github’а — 394. Лицензия совместима с закрытым ПО
  22. Apache Phoenix — Высокопроизводительный слой для реляционных баз данных поверх HBase для систем с минимальным откликом, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  23. FlexyPool — Добавляет метрики и отказоустойчивые стратегии для наиболее популярных пулов соединией с базами данных, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  24. LightAdmin — Легко настраиваемя CRUD UI библиотека для быстрой разработки приложений, Лицензия: Apache 2Можно использовать в коммерческом закрытым ПО

5. Маппинг объектов в базы данных (ORM и т. п.)

 

К оглавлению

 

  1. HikariCP HikariCP — быстрая, надежная и легкая библиотека для создания JDBC connection pool с минимальными накладными расходами. Лицензия: Apache 2, рейтинг github’а — 1542. Лицензия совместима с закрытым ПО
  2. Mybatis 3 MyBatis это фреймворк маппинга Java объектов в базы данных. Соединяет Java объектами с определенными хранимыми процедурами или sql запросами. Лицензия: Apache 2, рейтинг github’а — 1428. Лицензия совместима с закрытым ПО
  3. Hibernate orm Hibernate’s ORM фреймворк, один из самых популярных в Java, надежный, проверенный и широкоиспользуемый фреймворк с большим и активным сообществом. http://hibernate.org/orm/ Лицензия: GNU Lesser 2.1, рейтинг github’а — 1275. Лицензия совместима с закрытым ПО
  4. JOOQ JOOQ — решение по простой интеграции и мапингу Java приложений с популярными базами данных, такими как Oracle, Microsoft SQL Server, IBM DB2, или SAP Sybase. http://www.jooq.org/. Лицензия: Apache 2, рейтинг github’а — 830. Лицензия совместима с закрытым ПО
  5. Querydsl Querydsl это Java фреймворк позволяющий конструировать типобезопасные SQL-подобные запросы для множества backends включая JPA, MongoDB и SQL. http://www.querydsl.com/. Лицензия: Apache 2, рейтинг github’а — 570. Лицензия совместима с закрытым ПО
  6. Kundera ORM поддерживающий спецификации JPA 2.1 для полиглот маппинга в различные NoSQL хранилища. Лицензия: Apache 2, рейтинг github’а — 490. Лицензия совместима с закрытым ПО
  7. Spring data jpa Spring Data Jpa — обертка Spring фреймворка над JPa провайдерами. Лицензия: Apache 2, рейтинг github’а — 459. Лицензия совместима с закрытым ПО
  8. Jdbi jDBI предлагает удобный интерфейс над SQL операциями в Java. http://jdbi.org/.Лицензия: Apache 2, рейтинг github’а — 458. Лицензия совместима с закрытым ПО
  9. ActiveJDBCActiveJDBC это Java реализация Active Record шаблона проектирования. Вдохновлен ActiveRecord ORM в Ruby on Rails… Лицензия: Apache 2, рейтинг github’а — 230. Лицензия совместима с закрытым ПО
  10. Vibur DBCP — Библиотека реализующая JDBC пул соединений с дополнительными средствами мониторинга производительности, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  11. Ebean — Предоставляет простой и быстрой доступ к данным, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  12. EclipseLink — Поддерживает большое количество стандартов ORM: JPA, JAXB, JCA и SDO, Лицензия: Eclipse Public License v1.0 и BSD 3Лицензия совместима с закрытым ПО
  13. OrmLite — Легковесный пакет избегающий усложнений и перерасхода ресурсов других ORM решений,
    , Лицензия: ISCЛицензия совместима с закрытым ПО
  14. Apache Cayenne Простая в использовании Java ORM. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  15. Apache OpenJPA Реализация Java Persistence API спецификации. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  16. [Apache MetaModel]( http://metamodel.apache.org) Apache MetaModel это универсальный способ делать запросы и получать данные из различных источнико включая: Relational (JDBC) databases, CSV files, Excel spreadsheets, XML files, JSON files, Fixed width files, MongoDB, Apache CouchDB, Apache HBase, Apache Cassandra, ElasticSearch, OpenOffice.org databases, Salesforce.com, SugarCRM и даже коллекции из обычных Java объектов (POJOs). Лицензия: Apache 2Лицензия совместима с закрытым ПО

6. Системы, для обработки данных (работа с грязными данными, анализ и т.п.)

 

К оглавлению

 

  1. Storm — распределенная и устойчивая к ошибкам обработка данных в реальном времени: потоковая обработка, непрерывные вычисления, распределенный RPC и другое. Лицензия: Apache 2, рейтинг github’а — 8636. Лицензия совместима с закрытым ПО
  2. OpenRefine — инструменты для обработки «грязных» плохо структурированных данных и улучшения их. Выполняет очистку данных, преобразование, связывает с базой данных и позволяет обращаться к данным с помощью web сервисов. Лицензия: BSD, рейтинг github’а — 2939. Лицензия совместима с закрытым ПО
  3. Addthis Stream lib — библиотека Java для групповых операций на потоковыми данными, таких как оценка мощности (подсчет количества элементов), определение членов множества, оценка частоты, получения первых N элементов и т.п… Лицензия: Apache 2, рейтинг github’а — 1145. Лицензия совместима с закрытым ПО
  4. HdrHistogram (A High Dynamic Range (HDR) Histogram ) — выполняет запись данных, их анализ и построение сложных графиков (Histogram). Лицензия: BSD 2, рейтинг github’а — 672. Лицензия совместима с закрытым ПО
  5. HazyResearch DeepDive это система выделения значений из темных данных. Темные данные, как темная материя, имеют большой вес из текста, таблиц, графиков и изображений и не имеют четкой структуры, что делает их почти не обрабатываемыми обычными способами. Лицензия: Apache 2, рейтинг github’а — 531. Лицензия совместима с закрытым ПО
  6. Apache Incubator Zeppelin это расположенный в веб notebook (записная книжка?), который позволяет проводить анализ данных, их визуализацию и создавать документы, содержащие SQL, Scala и т.п.. Лицензия: Apache 2, рейтинг github’а — 463. Лицензия совместима с закрытым ПО
  7. Seldon Server предоставляет реализацию REST API интерфейса для выдачи рекомендаций по контенту и аналитических предсказаний. Лицензия: Apache 2, рейтинг github’а — 453. Лицензия совместима с закрытым ПО
  8. Pulsar — открытая аналитическая платформа, работающая в реальном времени. Лицензия: GNU 2.0, рейтинг github’а — 435. Не соместимая с закрытым ПО лицензия
  9. Suro: Netflix’s Data Pipeline — это сервис для сбора, агрегации и управления большим количеством разнообразных событий, включая данные логов.. Лицензия: Apache 2, рейтинг github’а — 405. Лицензия совместима с закрытым ПО
  10. Apache UIMA Annotator components and a scalable integration and deployment framework for Unstructured Information analysis. Лицензия: Apache 2Лицензия совместима с закрытым ПО

7. Большие данные (big data)

 

К оглавлению

 

Фреймворки и библиотеки

 

  1. Apache Storm — зеркало для Apache Storm — свободную и распределенную систему обработки данных в реальном времени, аналог Hadoop, но для быстрой потоковой обработки данных, может использоваться с любым языком программирования… Лицензия: Apache 2, рейтинг github’а — 2098. Лицензия совместима с закрытым ПО
  2. H2o = добавляет математические операции в Hadoop, h2o позволяет быстро вычислять статистику, машинное обучение и математические операции для bigdata. Лицензия: Apache 2, рейтинг github’а — 1725. Лицензия совместима с закрытым ПО
  3. Cloudera Oryx это простая инфраструктура, обеспечивающая высоко нагруженную систему машинного обучения, анализа и выдачи прогнозов в режиме реального времени, работающая с Apache Hadoop, HTTP REST API и реализующая lambda architecture.. Лицензия: Apache 2, рейтинг github’а — 1142. Лицензия совместима с закрытым ПО
  4. Twitter Elephant bird — набор коллекций и алгоритмов от Twitter’а, для работы с Hadoop lzo, Apache Thrift, Hadoop, Pig, Hive, и HBase… Лицензия: Apache 2, рейтинг github’а — 861. Лицензия совместима с закрытым ПО
  5. Apache Hadoop — зеркало Apache Hadoop. Систему для обработки Bigdata. Лицензия: Apache 2, рейтинг github’а — 803. Лицензия совместима с закрытым ПО
  6. Google Mr4c это фрейворк, который позволяет запускать нативный код в Hadoop. Лицензия: GNU Lesser 3, рейтинг github’а — 702. Лицензия совместима с закрытым ПО
  7. Alibaba Jstorm — распределенная и устойчивая к ошибкам система вычисления результатов в реальном времени, вдохновленная Apache Storm,… Лицензия: Apache 2, рейтинг github’а — 654. Лицензия совместима с закрытым ПО
  8. Etsy Oculus находит аномальную корреляцию компонент системы Kale system. После того, как вы ввыбрали интересную или аномальную метрику, Oculus найдете все другие метрики в вашей системе, которые выглядят похоже… Лицензия: MIT, рейтинг github’а — 618. Лицензия совместима с закрытым ПО
  9. Linkedin Datafu это Hadoop библиотека для крупномасштабных систем обработки данных, на данный момент это проект в Apache Incubator. Лицензия: Apache 2, рейтинг github’а — 570. Лицензия совместима с закрытым ПО
  10. Linkedin Gobblin это универсальный интеграционный фреймворк работающий на Hadoop для получения, трансформации и загрузки большого количества данных в различные источники данных, такие как базы данных, rest APIs, FTP/SFTP сервера и т.д.. Лицензия: Apache 2, рейтинг github’а — 547. Лицензия совместима с закрытым ПО
  11. Apache Flink — зеркало Apache Flink. Apache Flink это открытая платформа для обработки потоковых и пакетных данных. Лицензия: Apache 2, рейтинг github’а — 475. Лицензия совместима с закрытым ПО
  12. Oryx 2 — реализация лямбда архитектуры для Apache Spark и Apache Kafka, но со специализацией на машинном обучении в реальном времени. Лицензия: Apache 2, рейтинг github’а — 456. Лицензия совместима с закрытым ПО
  13. Yahoo SAMOA (Scalable Advanced Massive Online Analysis) — открытая платформа для потоковой обработки больших данных (mining big data). Лицензия: Apache 2, рейтинг github’а — 394. Лицензия совместима с закрытым ПО
  14. Apache Curator Набор Java библиотека, которые облегчают использование Apache ZooKeeper.Лицензия: Apache 2Лицензия совместима с закрытым ПО
  15. Apache Hama Hama это эффективный и легко расширяемый универсальный BSP computing движок.Лицензия: Apache 2Лицензия совместима с закрытым ПО
  16. Apache Falcon Платформа управления данными и вычислениями для Hadoop.Лицензия: Apache 2Лицензия совместима с закрытым ПО
  17. Apache Knox A REST API Gateway for Hadoop Services. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  18. Apache Flume Apache Flume это распределенная, надежная и доступная система для эффективного сбора, агрегации и сохранения больших объемов логов из множества различных источников в централизованное хранилище данных. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  19. Apache Tajo Tajo это система обработки больших данных в Hadoop для обработки web-scale набора данных. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  20. Apache Tez Фреймвор для обработки сколь угодно сложных направленных ациклических графов (DAGs) в задачах обработки данных. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  21. Apache REEF Apache REEF (Retainable Evaluator Execution Framework) это маштабируемый фреймворк, который облегчает разработку Big Data приложений на основе менеджеров ресурсов таких как Apache YARN или Mesos. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  22. Apache Pig Apache Pig это платформа для анализа больших наборов данных в Hadoop. Лицензия: Apache 2Лицензия совместима с закрытым ПО

 

Хранилища, базы данных, Sql-подобные движки, поисковые система для big data

 

  1. Druid это column-oriented хранилище и система обработки в реальном времени для обработки потоковых и пакетной информации и интегрированная с Samza, Kafka, Storm, and Hadoop. Лицензия: Apache 2, рейтинг github’а — 1846. Лицензия совместима с закрытым ПО
  2. Apache Hive — зеркало Apache Hive. Фреймворк для созданий SQL подобного языка запросов для Hadoop. https://hive.apache.org/.Лицензия: Apache 2, рейтинг github’а — 619. Лицензия совместима с закрытым ПО
  3. Apache Kylin это открытая распределенная аналитическая система, которая обеспечивает SQL интерфейс и OLAP отчеты для Hadoop… Лицензия: Apache 2, рейтинг github’а — 504. Лицензия совместима с закрытым ПО
  4. Elasticsearch hadoop — интеграция поиска и анализ ElasticSearch в Hadoop. Лицензия: Apache 2, рейтинг github’а — 457. Лицензия совместима с закрытым ПО
  5. Facebook Presto Библиотека для работы с распределенными SQL запросами к big data источникам (Cassandra, Hive, Kafka, MySQL, PostgreSQL и т.п.). Лицензия: Apache 2, рейтинг github’а — 3603. Лицензия совместима с закрытым ПО
  6. [Apache MetaModel]( http://metamodel.apache.org) Apache MetaModel это универсальный способ делать запросы и получать данные из различных источнико включая: Relational (JDBC) databases, CSV files, Excel spreadsheets, XML files, JSON files, Fixed width files, MongoDB, Apache CouchDB, Apache HBase, Apache Cassandra, ElasticSearch, OpenOffice.org databases, Salesforce.com, SugarCRM и даже коллекции из обычных Java объектов (POJOs). Лицензия: Apache 2Лицензия совместима с закрытым ПО
  7. Apache Accumulo Apache Accumulo основана на идее BigTable, предложенной Google, и работает на Apache Hadoop, Zookeeper и Thrift. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  8. Apache Gora предлагает in-memory модель данных с маппингов в big data. Gora подерживает маппинг в column stores, key value stores, document stores и RDBMSs. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  9. [Apache Sqoop] Apache Sqoop(TM) инструмент для переноса данных между Apache Hadoop и хранилищами данных, таких как реляционный базы данных.(http://sqoop.apache.org) Лицензия: Apache 2Лицензия совместима с закрытым ПО
  10. Giraph Apache Giraph это система обработи графов, построенная над Hadoop. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  11. Impala — Запросы в реальном времени к Hadoop. рейтинг github’а: 1550 Лицензия: Apache 2Лицензия совместима с закрытым ПО

 

Мониторинг, тестирование и управления кластерами big data серверов

 

  1. Twitter Ambrose это платформа для визуализации и мониторинга в реальном времени MapReduce data workflows.. Лицензия: Apache 2, рейтинг github’а — 1024. Лицензия совместима с закрытым ПО
  2. Umongo — десктопное приложение для просмотра и управления вашим MongoDB кластером. Лицензия: Apache 2, рейтинг github’а — 495. Лицензия совместима с закрытым ПО
  3. Apache Ambari Упрощает управление и мониторинг Apache Hadoop clusters. Предоставляет веб UI интерфейс и RESTful APIs. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  4. Apache Chukwa Chukwa это открытая систнам для мониторига больших распределенных систем. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  5. Apache Bigtop Bigtop это проект для Infrastructure Engineers и Data Scientists котокрые ищут инструменты для тестирования, конфигурирования и управления big date компонентами. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  6. Apache BookKeeper BookKeeper это replicated система логирования для big datar. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  7. Apache Crunch Предоставляет фреймворк для написания, тестирования и запуска MapReduce pipelines. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  8. Apache MRUnit Apache MRUnit это Java библиотека для создания unit тестов, для тестирования Apache Hadoop map reduce jobs. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  9. Apache Oozie Oozie это workflow система расписания для управления Apache Hadoop jobs. Лицензия: Apache 2Лицензия совместима с закрытым ПО

8. Машинное обучение и нейроные сети (Machine Learning)

 

К оглавлению

 

  1. Airbnb Aerosolve Библиотека для машинного обучения, дружелюбная к пользователям (простая в настройке и т. п.). Лицензия: Apache 2, рейтинг github’а — 1672. Лицензия совместима с закрытым ПО
  2. Smile SmileMiner (Statistical Machine Intelligence and Learning Engine) — набор Java библиотек различных алгоритмов машинного обучения. Лицензия: Apache 2, рейтинг github’а — 1519. Лицензия совместима с закрытым ПО
  3. Deeplearning4j Deep Learning нейронная сеть, написанная на Java и Scala, с интеграцией с Hadoop, Spark и другими backends, которые могут работать как с центральным, так и с графическим процессором. http://deeplearning4j.org/.Лицензия: Apache 2, рейтинг github’а — 1172. Лицензия совместима с закрытым ПО
  4. Libsvm «Libsvm это библиотека для мамашиного обучения на основе support vector machines (support vector networks), поддерживает SVM classification and regression, C-SVM classification, nu-SVM classification, one-class-SVM, epsilon-SVM regression, and nu-SVM Regression. Лицензия: BSD 3, рейтинг github’а — 812. Лицензия совместима с закрытым ПО
  5. Neuralnetworks Алгоритмы машинного обучения и нейронных сетей с использованием GPU процессора. Лицензия: MIT, рейтинг github’а — 583. Лицензия совместима с закрытым ПО
  6. Datumbox framework Datumbox это фреймворк для быстрой разработки систем машинного обучения и анализа статистики. Лицензия: Apache 2, рейтинг github’а — 525. Лицензия совместима с закрытым ПО
  7. Apache Mahout Зеркало Apache Mahout. Задачей проекта Apache Mahout является создание окружения для быстрой разработки масштабируемых и производительных систем машинного обучения. Реализует хорошо расширяемые алгоритмы машинного обучения специализированные на применении фильтрации, кластеризации и классификации. https://mahout.apache.org/.Лицензия: Apache 2, рейтинг github’а — 492. Лицензия совместима с закрытым ПО
  8. Encog java core Encog это фреймворк для машинного обучения предоставляющий большое число алгоритмов и технологий машинного обучения (нейронные сети, генетические алгоритмы и т. д.). Лицензия: Apache 2, рейтинг github’а — 394. Лицензия совместима с закрытым ПО
  9. Apache Flink — зеркало Apache Flink. Apache Flink это открытая платформа для обработки потоковых и пакетных данных. https://flink.apache.org/ Лицензия: Apache 2, рейтинг github’а — 475. Лицензия совместима с закрытым ПО
  10. Apache Hadoop — зеркало Apache Hadoop. Систему для обработки Bigdata (больших данных с помощью кластеров на простом железе). http://hadoop.apache.org/ Лицензия: Apache 2, рейтинг github’а — 803. Лицензия совместима с закрытым ПО
  11. Apache Spark — Фреймворк для анализа данных, используя класстер для вычислений, Подпроект: MLlib — библиотека машинного обучения для Spark.Лицензия: Apache 2Лицензия совместима с закрытым ПО
  12. DeepDive — Создает структурированную информацию из неструктурированных данных и интегрирует её с существующими базами данных, Лицензия: Creative Commons Attribution 4.0Лицензия совместима с закрытым ПО
  13. H2o = добавляет математические операции в Hadoop, h2o позволяет быстро вычислять статистику, машинное обучение и математические операции для bigdata.http://h2o.ai/ Лицензия: Apache 2, рейтинг github’а — 1725. Лицензия совместима с закрытым ПО
  14. JSAT — Алгоритмы для пре-процессинга, классификация, регрессия, и кластеризация поддерживающие многопоточное выыполнение, Лицензия: GNU 3Не соместимая с закрытым ПО лицензия
  15. Weka — Коллекция алгоритмов для data mining задач от пре-процессинга до визуализации, Лицензия: GNUНе соместимая с закрытым ПО лицензия
  16. Protégé — Реализует редактов онтология и фреймворк для экспертных систем, Лицензия: BSD 2Лицензия совместима с закрытым ПО
  17. EvA2 — Фреймворк для использования эволюционных алгоритмов- ранее известный как JavaEvA/EvA. Лицензия: GNU Lesser 3Лицензия совместима с закрытым ПО
  18. htm.java — Hierarchical Temporal Memory implementation in Java — это официальный сделанный сообществом порт Numenta Platform for Intelligent Computing (NuPIC). Лицензия: AGPL 3 или платная лицензия для комерческого использования. Не соместимая с закрытым ПО лицензия
  19. JAVA-ML — Java Machine Learning Library (Java-ML). Лицензия: GNU 2 Не соместимая с закрытым ПО лицензия
  20. JSAT — Набор алгоритмов машинного обучения для классификации, регрессионного анализа и кластеризации. Лицензия: GNU 3 Не соместимая с закрытым ПО лицензия
  21. Meka — Открытая реализация методов multi-label классификации и оценки (расширение для Weka). Лицензия: GNU Не соместимая с закрытым ПО лицензия
  22. Neuroph — Neuroph это легковесный фреймворк по создания нейронной сети на Java. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  23. rapaio — Набор инструментов для статистического анализа, data mining и машинного обучения на Java. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  24. Apache SystemML — Гибкий, маштабируемый язык машииного обучения. (incubator project). Лицензия: Apache 2Лицензия совместима с закрытым ПО
  25. wAlnut — Объектно ориентированная модель для частичного моделирования человеческого мыщления. Лицензия: GNU 3 Не соместимая с закрытым ПО лицензия

Semantic Web и Linked Data

 

Semantic Web (он же Web of Data, Linked Data, Linking Open Data) — это направление развития Всемирной паутины, позволяющее машинам не только отображать информацию в интернете, но и понимать ее смысл.

 

  1. Apache Marmotta Открытая платформа для работы с Linked Data. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  2. Apache Jena Фреймворк для разработки Semantic Web и Linked Data приложений на Java. Лицензия: Apache 2Лицензия совместима с закрытым ПО

Constraint Satisfaction Problem Solver

 

Библиотеки, которые помогают в такой задачи искусственного интеллекта (ИИ) как удовлетворения ограничений (УО) (constraint satisfaction problem).

 

  1. Choco — Полностью готовая «с полки» система по решению задачи удовлетворения ограничений (УО) (constraint satisfaction problem), используя constraint programming технологии, Лицензия: BSDЛицензия совместима с закрытым ПО
  2. JaCoP — Включает в себя интерфейс для языка FlatZinc, что позволяет ему выполнять модели MiniZinc, Лицензия: неизвестна
  3. OptaPlanner — Решает задачи бизнес планирования и оптимизации ресурсов, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  4. Sat4J — Наиболее продвинутый SAT решатель для логических (? boolean) и оптимизационых проблем, Лицензия: GNU Lesser 3 и Eclipse Public 1.0Лицензия совместима с закрытым ПО

Работа с естественными языками (NLP) и распознавние речи

 

К оглавлению

 

  1. Stanfordnlp CoreNLP Stanford CoreNLP: Java библиотека для работы с Stanford NLP (инструментами для анализа и работы с текстом на естественных языках, например английским). Лицензия: GNU 2, рейтинг github’а — 871. Не соместимая с закрытым ПО лицензия
  2. Apache OpenNLP — Набор инструментов для типовых задач таких как tokenization, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  3. LingPipe — Набор инструментов для различных видов задач от POS tagging до анализа предложений, Лицензия: AGPL и платная лицензия, проприетарнаяНе соместимая с закрытым ПО лицензия ИЛИ Проприетарная лицензия
  4. Mallet — Статистическая обработка естественных языков, классификация документов, кластеризация, topic modeling и многое другое, Лицензия: Eclipse Public License v1.0Лицензия совместима с закрытым ПО
  5. Twitter Text Libraries — Коллекция библиотек и тестов для парсинга текста твитов(tweet). Лицензия: Apache 2Лицензия совместима с закрытым ПО
  6. NLP4J NLP4J проект (старое название ClearNLP) предоставляет набор NLP инструментов для JVM языков. Этот проект разрабатывается в NLP Research Group из Emory University. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  7. Joshua Joshua — система машинного перевода, написанная на Java. Разработана Human Language Technology Center of Excellence at Johns Hopkins University. Лицензия: BSD 2Лицензия совместима с закрытым ПО
  8. Z-MERT Z-MERT — система машинного перевода. Лицензия: GNU Lesser General Public License (LGPL)Лицензия совместима с закрытым ПО
  9. ClearTK — ClearTK — фреймворк для разработки систем machine learning и natural language processing которые реализаует Apache Unstructured Information Management Architecture, github star: 34. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  10. Apache cTAKES — Apache cTAKES это NLP система для получения данных из медицинской документации. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  11. The Stanford Natural Language Processing Group — Набор различных NLP инструментов, написанных на Java. Подпроекты: Stanford Parser — A statistical parser, Stanford POS TaggerStanford Named Entity RecognizerRegexNER,
    Word Segmenter,Classifier,EnglishTokenizer,TokensRegex,Temporal Tagger,Pattern-based Information Extraction and Diagnostics,Stanford Relation Extractor. Лицензия: GNU 2/3Не соместимая с закрытым ПО лицензия
  12. Apache Tika The Apache Tika это набор инструмнтов для получение метаданных и структурированого теста из различных видом документов, используя разные парсеры (Apache cTAKES,OpenNLP и т.п.). Лицензия: Apache 2Лицензия совместима с закрытым ПО
  13. CMU Sphinx — Библиотека для распознавания речи. Лицензия: BSD 3Лицензия совместима с закрытым ПО

III. Работа с сетью и интеграция

1. Веб сервера и сервера приложений (web server & application server)

 

К оглавлению

 

  1. Wildfly — сервер приложений (Application Server), ранее известный как JBOSS, разработанный Red Hat с расширенной поддержки Java EE. Лицензия: GNU Lesser 2.1, рейтинг github’а — 1386. Лицензия совместима с закрытым ПО
  2. Undertow io Undertow — высокопроизводительный неблокирующий вебсервер. Лицензия: Apache 2, рейтинг github’а — 721. Лицензия совместима с закрытым ПО
  3. Apache Tomcat — зеркало Apache Tomcat — открытый web сервер с поддержкой сервлетов, jsp и некоторых аспектов J2EE. Проверенный и всесторонний сервер для сервлет и jsp. Лицензия: Apache 2, рейтинг github’а — 531. Лицензия совместима с закрытым ПО
  4. Nginx clojure — Nginx модуль с использованием Clojure или Java или Groovy программ. Лицензия: BSD 3, рейтинг github’а — 514. Лицензия совместима с закрытым ПО
  5. Eclipse Jetty.project — Http сервер и контейнер сервлетов. Легкий, маленький сервер, часто встраиваемый (embedded) в приложения. Лицензия: Eclipse Public 1.0 / Apache 2.0, рейтинг github’а — 512. Лицензия совместима с закрытым ПО
  6. Apache TomEE — Apache Tomcat сервер к которому добавили поддержку Java EE, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  7. WebSphere Liberty — Легковесный, модульный сервер, разработанный IBM, Лицензия: платная, проприетарная Проприетарная лицензия
  8. GlassFish — Сервер приложений и образцовая реализация Java EE от Oracle, Лицензия: GNU 2 или CDDL 1.0Не соместимая с закрытым ПО лицензия
  9. Apache Geronimo Java EE Application Server. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  10. Apache James Apache Java Enterprise Mail Server (или Apache James) это 100% чистый Java SMTP и POP3 постовый сервер и NNTP News сервер. Лицензия: Apache 2Лицензия совместима с закрытым ПО

2. Сеть и сокеты

 

К оглавлению

 

  1. Netty низкоуровневый асинхроно-событийный фреймворк для быстрого создания высокопроизводительных клиент-серверных соединений. Более удобный аналог ассинхронным сокетам из модуля java.nio из JDK. . Лицензия: Apache 2, рейтинг github’а — 4847. Лицензия совместима с закрытым ПО
  2. Netty socketio Реализация Socket.IO сервера на Java. Основан на Netty фреймворке, служит для обеспечение работы с сетевыми соединениями и сокетами. Лицензия: Apache 2, рейтинг github’а — 754. Лицензия совместима с закрытым ПО
  3. Grpc java gRPC-Java это реализация RPC библиотеки и фреймворка на Java. Лицензия: BSD 3, рейтинг github’а — 753. Лицензия совместима с закрытым ПО
  4. Socket.io java client Реализация Socket.IO клиента на Java. Лицензия: MIT, рейтинг github’а — 688. Лицензия совместима с закрытым ПО
  5. Socket.io client.java Полнофункциональная Socket.IO клиентская библиотека для Java, совместимая с Socket.IO v1.0 и выше… Лицензия: MIT, рейтинг github’а — 603. Лицензия совместима с закрытым ПО
  6. EsotericSoftware Kryonet TCP/UDP клиентская и серверная библиотека для Java, основанная на Kryo. Лицензия: BSD 3, рейтинг github’а — 539. Лицензия совместима с закрытым ПО
  7. Async Http Client — Ассинхронная HTTP и вебсокет клиентская библиотека, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  8. Comsat — Интегрирует стандартный Java веб API c Quasar fibers и actors, Лицензия: Eclipse Public 1.0Лицензия совместима с закрытым ПО
  9. Grizzly — NIO фреймворк. Использует как сетевой слой в Glassfish, Лицензия: GNU 2 и CDDL 1.1Не соместимая с закрытым ПО лицензия
  10. OkHttp — HTTP+SPDY клиент, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  11. Undertow — Вебсервер, предоставляющий блокирующий и неблокирующий API, основанный на NIO. Используется как сетевой слой в WildFly, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  12. Apache MINA Apache MINA это фреймворк для создания быстрых сетевых приложений используя Java NIO. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  13. Apache HttpComponents проект для создания и поддержки низкоуровневых Java компонент работающих на HTTP, Java NIO и т.п. Лицензия: Apache 2Лицензия совместима с закрытым ПО

3. Работа с сообщениями (message), очереди сообщений и прием и отправка сообщений

 

К оглавлению

 

  1. LMAX Exchange Disruptor Высокопроизводительная библиотека для поддержки межпоточных сообщений. Лицензия: Apache 2, рейтинг github’а — 3137. Лицензия совместима с закрытым ПО
  2. Gifsockets Коммуникационная библиотека, работающая в режиме реального времени и использующая Animated Gifs как транспорт. Лицензия: Eclipse Public 1.0, рейтинг github’а — 1414. Лицензия совместима с закрытым ПО
  3. Real logic Aeron Эффективная и надежная система отправки и получения одноадресных и многоадресных сообщения по сети (Publisher, Subscriber, Event, Monitoring и т.п.)… Лицензия: Apache 2, рейтинг github’а — 1103. Лицензия совместима с закрытым ПО
  4. JeroMQ ZeroMQ — система для работы с распределенными сообщениями, очередями, подписками и т.д… Лицензия: GNU 3, рейтинг github’а — 834. Не соместимая с закрытым ПО лицензия
  5. Metamorphosis Высокопроизводительная распределенная система обмена сообщениями. Лицензия: Apache 2, рейтинг github’а — 580. Лицензия совместима с закрытым ПО
  6. Igniterealtime Openfire Openfire это RTC (real time collaboration) сервер использующий широко распространенные протоколы обмена сообщениями, такие как XMPP (так же называемый Jabber). Лицензия: Apache 2, рейтинг github’а — 470. Лицензия совместима с закрытым ПО
  7. Zeromq Jzmq JZMQ это клиент для интеграции Java приложения с libzmq (например ZeroMQ, 0MQ). Лицензия: GNU 3, рейтинг github’а — 415. Не соместимая с закрытым ПО лицензия
  8. Aeron — Эффективный и надежный unicast и multicast транспорт сообщений, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  9. Apache ActiveMQ — Message broker that implements JMS and converts synchronous to asynchronous communication, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  10. Apache Camel — Glues together different transport APIs via Enterprise Integration Patterns, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  11. Apache Kafka — High-throughput distributed messaging system, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  12. Hermes — Fast and reliable message broker built on top of Kafka, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  13. JBoss HornetQ — Clear, concise, modular and made to be embedded, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  14. Smack Библиотека для создания XMPP клиента для JVMs и Android. Лицензия: Apache 2, рейтинг github’а — 426. Лицензия совместима с закрытым ПО
  15. Apache Qpid Реализиция AMQP спецификации. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  16. Apache Synapse Apache Synapse это легковестных ESB движок (сервисной шина предприятия) и XML router. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  17. Apache ServiceMix Apache ServiceMix это гибкий, открытый интеграционный контейнер для общего интерфейса к возможностям и функциональности Apache ActiveMQ, Camel, CXF и Karaf для создания полнофункционального ESB решения основнанного на OSGi. Лицензия: Apache 2Лицензия совместима с закрытым ПО

4. Работа с http и ssh

 

К оглавлению

 

  1. Square Okhttp HTTP & SPDY (новый формат HTTP от гугла) клиент для Android и Java. . Лицензия: Apache 2, рейтинг github’а — 5022. Лицензия совместима с закрытым ПО
  2. AsyncHttpClient Асинхронная Http и WebSocket клиентская библиотека для Java. Лицензия: Apache 2, рейтинг github’а — 2149. Лицензия совместима с закрытым ПО
  3. Http request Java библиотека для отправки различных HTTP Request и получения response. Лицензия:  MIT., рейтинг github’а — 1477. Лицензия совместима с закрытым ПО
  4. Nanohttpd Крошечный и простой embeddable HTTP сервер для Java… Лицензия: BSD 3, рейтинг github’а — 1184. Лицензия совместима с закрытым ПО
  5. Http kit Http-kit это минималистский, событийный, высокопроизводительный Clojure HTTP сервер и клиентская библиотека с WebSocket и поддержкой асинхронности. Лицензия: Apache 2, рейтинг github’а — 1172. Лицензия совместима с закрытым ПО
  6. Apache Zookeeper Зеркало Apache Hadoop ZooKeeper — позволяет разрабатывать и поддерживать сервер, который позволяет очень надежную распределенную координации.. Лицензия: Apache 2, рейтинг github’а — 987. Лицензия совместима с закрытым ПО
  7. Moco Простой HTTP Stub сервер, для простого тестирования интеграции. Лицензия: MIT, рейтинг github’а — 857. Лицензия совместима с закрытым ПО
  8. Webbit Webbit — событийно-ориентированный вебсокет и HTTP сервер. Лицензия: BSD 3, рейтинг github’а — 648. Лицензия совместима с закрытым ПО
  9. Mashape Unirest java Unirest in Java: Упрощенная и легковесная HTTP клиент библиотека… Лицензия: MIT, рейтинг github’а — 537. Лицензия совместима с закрытым ПО
  10. Sshj Поддержка ssh, scp и sftp для java. Лицензия: Apache 2, рейтинг github’а — 500. Лицензия совместима с закрытым ПО
  11. Netflix Feign Feign позволяет создавать Java Http клиента проще и быстрее. Feign основан на Retrofit, JAXRS-2.0 и WebSocket. Лицензия: Apache 2, рейтинг github’а — 485. Лицензия совместима с закрытым ПО

5. Работа с rest

 

К оглавлению

 

  1. Square Retrofit Типобезопасная библиотека для создания REST клиента для Android и Java. . Лицензия: Apache 2, рейтинг github’а — 5945. Лицензия совместима с закрытым ПО
  2. Dropwizard фреймворк для создания RESTful сервисов c использованием Jetty, Jackson, Jersey и Metrics. Лицензия: Apache 2, рейтинг github’а — 3427. Лицензия совместима с закрытым ПО
  3. Swagger Примеры и сервер интеграция для генерации Swagger API спецификаий, которые позволяют создать легкий доступ к вашему REST API. http://swagger.io/ Лицензия: Apache 2, рейтинг github’а — 2657. Лицензия совместима с закрытым ПО
  4. Generator jhipster Хипстер стек для Java разработчиков: Yeoman + Maven + Spring + AngularJS в одном генераторе. Лицензия: Apache 2, рейтинг github’а — 2352. Лицензия совместима с закрытым ПО
  5. Jersey Зеркало Jersey 2.x. Jersey это REST фреймворк реализующий JAX-RS спецификацию. Лицензия: CDDL 1.0, рейтинг github’а — 864.
  6. Linkedin Rest.li Rest.li это REST+JSON фреймворк для создания надежных, маштабируемых сервисов с использованием простого асинхронного API и dynamic discovery спецификацию… Лицензия: Apache 2, рейтинг github’а — 825. Лицензия совместима с закрытым ПО
  7. Spring hateoas Spring HATEOAS — этот проект поддерживает APIs для легкого создания REST сервисов поддерживающих HATEOAS принципы для Spring и особенно Spring MVC… Лицензия: Apache 2, рейтинг github’а — 456. Лицензия совместима с закрытым ПО
  8. Feign — HTTP клиент основанный на Retrofit, JAXRS-2.0 и WebSocket, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  9. RESTEasy — Полностью сертифицированая и переносимая реализация JAX-RS спецификации, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  10. RestExpress — Тонкий wrapper для JBOSS Netty HTTP stack для обеспечения маштабируемости и производительности, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  11. RestX — Фреймворк, основанный на аннотациях и генерации кода во время компиляции, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  12. Spark — фреймворк, вдохновленный Sinatra фреймворком, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  13. Apache Wink RESTFul веб сервис, основанный на JAX-RS спецификации. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  14. Apache Olingo Apache Olingo это Java и JavaScript библиотека реализующая Open Data Protocol (OData). Open Data Protocol (OData) это открытый протокол создания RESTful APIs сервисов. Лицензия: Apache 2Лицензия совместима с закрытым ПО

6. Интеграционные фреймворки

 

К оглавлению

 

  1. Jmxtrans Интеграция JVM с «внешним мира» (программами логирования, мониторинга, графики и т. п.). Лицензия: ?, рейтинг github’а — 708.
  2. Apache Camel Зеркало Apache Camel. Apache Camel — мощный свободный интеграционных фреймворк, основанный на Enterprise Integration Patterns… Лицензия: Apache 2, рейтинг github’а — 490. Лицензия совместима с закрытым ПО
  3. Apache CXF Apache CXF это открытый фреймворк, помогающий в разработке APIs, такого как JAX-WS или JAX-RS. Этот сервис позволяет использовать большое количество протоколов таких как SOAP, XML/HTTP, RESTful HTTP или CORBA и работать с большим количеством транспортов таких как HTTP, JMS или JBI. Лицензия: Apache 2Лицензия совместима с закрытым ПО

7. Парсеры (Parser) и «веб-пауки»/краулеры (web-crawling)

 

К оглавлению

 

  1. Sparklemotion Nokogiri Nokogiri это HTML, XML, SAX, и Reader парсер с подержкой XPath и CSS selector. Лицензия: Apache 2, рейтинг github’а — 3323. Лицензия совместима с закрытым ПО
  2. Jsoup jsoup это Java HTML парсер с использованием DOM, CSS, и jquery. http://jsoup.org/ Лицензия: MIT, рейтинг github’а — 2006. Лицензия совместима с закрытым ПО
  3. Webmagic Фреймворк для создания интернет ботов для индексирования (crawler), которые реализует все этапы жизненного цикла crawler: скачивание, управление url, выделение контент и сохранение… Лицензия: Apache 2, рейтинг github’а — 1089. Лицензия совместима с закрытым ПО
  4. Antlr4 ANTLR (ANother Tool для Language Recognition мощный генератор парсеров для чтения, обработки, использование или конвертирования структурированного текста или бинарных файлов. Лицензия: BSD 3, рейтинг github’а — 836. Лицензия совместима с закрытым ПО
  5. Parboiled Элегантный, легкий, простой в использовании и мощный парсер, написанный на Java и Scala. Лицензия: Apache 2, рейтинг github’а — 775. Лицензия совместима с закрытым ПО
  6. Pegdown Обработчик языка разметки Markdown, основанный на PEG парсере, поддерживающим большое количество расширений. Лицензия: Apache 2, рейтинг github’а — 692. Лицензия совместима с закрытым ПО
  7. Apache Nutch — Хорошо расширяемый, хорошо маштабированный вебпаук с рабочей экосистемой, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  8. Crawler4j — Простой и легковесный вебпаук, Лицензия: Apache 2Лицензия совместима с закрытым ПО

8. Работа с Json

 

К оглавлению

 

  1. Alibaba Fastjson Быстрый JSON обработчик. Лицензия: Apache 2, рейтинг github’а — 2605. Лицензия совместима с закрытым ПО
  2. JSON java Набор классов для работы с JSON в Java, конвертации JSON в XML, CDL, cookie lists, HTTP headers и обратно… Лицензия: Своя open-source лицензия ?, рейтинг github’а — 1561.
  3. Jsonschema2pojo Генерация Java классов из JSON схемы (или примера JSON) с аннотациями для data-binding для Jackson 1.x or 2.x, Gson и т. п… Лицензия: Apache 2, рейтинг github’а — 914. Лицензия совместима с закрытым ПО
  4. Square Moshi JSON библиотека для Android и Java, служит для упрощения парсинга Json в объекты Java. Лицензия: Apache 2, рейтинг github’а — 765. Лицензия совместима с закрытым ПО
  5. Instagram Ig json parser Быстрый JSON парсер для java проектов. Лицензия: BSD 3, рейтинг github’а — 730. Лицензия совместима с закрытым ПО
  6. FasterXML Jackson core Основная часть Jackson библиотеки для реализации работы с низкоуровневым («streaming») JSON парсера и генераторов JSON файлов. Лицензия: Apache 2, рейтинг github’а — 682. Лицензия совместима с закрытым ПО
  7. FasterXML Jackson databind Основной data-binding пакет для Jackson (2.x) основанный на потоковом API Jackson Сore. Лицензия: Apache 2, рейтинг github’а — 640. Лицензия совместима с закрытым ПО
  8. Jayway JsonPath Java JsonPath — реализация аналога XPATH только для Json, а не XML. Лицензия: Apache 2, рейтинг github’а — 448. Лицензия совместима с закрытым ПО
  9. Json schema validator Валидация JSON Schema, реализована на чистой Java, создана с целью проверки Json файлов, используя Json схемы. Лицензия: GNU Lesser 3/Apache 2, рейтинг github’а — 411. Лицензия совместима с закрытым ПО
  10. Genson -Мощная и простая в использовании Java библиотека для преобразования в/из JSON, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  11. Gson — Простая сериализации объектов в JSON и обратно. Хорошая производительность и легкость в использовании, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  12. Jackson — Похоже на GSON, но более производительна, если вам нужно часто создавать экземпляр библиотеки, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  13. LoganSquare — Библиотека парсинга и сериализации JSON, основанная на Jackson’s streaming API. Превосходит по некоторым возможностям GSON и Jackson библиотеки, Лицензия: Apache 2Лицензия совместима с закрытым ПО

9. CSV

 

Frameworks and libraries that simplify reading/writing CSV data.
К оглавлению

 

  1. opencsv — Простой CSV парсер, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  2. Super CSV — Мощный CSV парсер, поддерживающий Dozer, Joda-Time и Java 8, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  3. uniVocity-parsers — Один из самых быстрых и многофункционных CSV парсеров. Так же в библиотеке есть парсеры для TSV и файлом с записями фиксированной ширины, Лицензия: Apache 2Лицензия совместима с закрытым ПО

10. Интеграция с Api разных систем (соц. сетей и т. п.)

 

К оглавлению

 

  1. Twitter Zipkin Zipkin это распределенная системы отслеживания, которая используется Twitter для сборк информации о работе всех его различных сервисов. Лицензия: Apache 2, рейтинг github’а — 2442. Лицензия совместима с закрытым ПО
  2. Wizcorp Phonegap facebook plugin Официальный плагин для Facebook в Apache Cordova/PhoneGap. Лицензия: Apache 2, рейтинг github’а — 1587. Лицензия совместима с закрытым ПО
  3. Twitter4j Twitter4J это библиотека для работы с Twitter API в Java (поддерживает работу с JSON, REST Search API, Apache HttpClient, Async API, Streaming API, Async API, Streaming API, HTTP/2). Лицензия: Apache 2, рейтинг github’а — 1551. Лицензия совместима с закрытым ПО
  4. Netflix Ice AWS Usage Tool — система работы с Amazon Web Services. Лицензия: Apache 2, рейтинг github’а — 1358. Лицензия совместима с закрытым ПО
  5. Twitter Commons Библиотека для работы с Twitter для python и JVM. Лицензия: Apache 2, рейтинг github’а — 964. Лицензия совместима с закрытым ПО
  6. Alibaba RocketMQ RocketMQ — это реализация системы обмена сообщениями MQ (Message queue) для взаимодействия с различными сервисами портала Alibaba. Лицензия: Apache 2, рейтинг github’а — 627. Лицензия совместима с закрытым ПО
  7. Twitter Hbc Java HTTP клиент для работы Twitter’s Streaming API. Лицензия: Apache 2, рейтинг github’а — 498. Лицензия совместима с закрытым ПО
  8. Spring projects Spring social Spring Social это расширение Spring Framework, которые позволяет интегрировать ваши приложения с Software-as-a-Service (SaaS) провайдерами, такими как Facebook или Twitter. Лицензия: Apache 2, рейтинг github’а — 409. Лицензия совместима с закрытым ПО

11. Работа с биткойном

 

К оглавлению

 

  1. XChange XChange это Java библиотека предоставляющая удобный API для взаимодействия с более чем 50+ Bitcoin и Altcoin обменными биржами. Лицензия: MIT, рейтинг github’а — 455. Лицензия совместима с закрытым ПО
  2. bitcoinj Библиотека для работы с Bitcoin. Лицензия: Apache 2, рейтинг github’а — 453. Лицензия совместима с закрытым ПО
  3. DiabloMiner OpenCL майнер для Bitcoin. Лицензия: GNU 3, рейтинг github’а — 443. Не соместимая с закрытым ПО лицензия

12. Облачные системы

 

К оглавлению

 

  1. Netflix SimianArmy — инструменты для поддержки ваших облачных операций. Chaos Monkey это гибкий инструментарий для создания устойчивых к случайным ошибкам приложений… Лицензия: Apache 2, рейтинг github’а — 2892. Лицензия совместима с закрытым ПО
  2. Netflix Eureka это REST (Representational State Transfer) — сервис для управления AWS (Amazon Web Services ) облаками, обеспечение load balancing и отказоустойчивости. Лицензия: Apache 2, рейтинг github’а — 1051. Лицензия совместима с закрытым ПО
  3. Aws sdk java Официальное зеркало Java AWS SDK (Amazon Web Services). Лицензия: Apache 2, рейтинг github’а — 1008. Лицензия совместима с закрытым ПО
  4. Syncany это облачное хранилище и файл обменное приложение, которое фокусируется на безопансоти и абстрагирования от системы хранения. Лицензия: GNU 3, рейтинг github’а — 772. Не соместимая с закрытым ПО лицензия
  5. Legacy Jclouds это открытая библиотека, которая поможет начать работать с облаками используя ваши навыки разработки на Java. Поддерживает многие виды облаков включая Amazon, VMWare, Azure, и Rackspace… Лицензия: Apache 2, рейтинг github’а — 507. Лицензия совместима с закрытым ПО
  6. Elasticsearch — одна из самых популярных систем распределенного облачного поиска.. Лицензия: Apache 2, рейтинг github’а — 11833. Лицензия совместима с закрытым ПО
  7. Elasticsearch cloud aws Плагин для работы ElasticSearch с Amazon Web Service (AWS) облаками. Лицензия: Apache 2, рейтинг github’а — 435. Лицензия совместима с закрытым ПО
  8. Elasticsearch analysis ik The IK Analysis плагин интеграции с Lucene IK анализаторов для elastic search, поддерживающий пользовательские словари. Лицензия: ?, рейтинг github’а — 395.
  9. Apache CloudStack Apache CloudStack это IaaS (“Infrastracture as a Service”) облачная платформа. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  10. Apache Stratos Apache Stratos это Platform-as-a-Service (PaaS) облачная платформа. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  11. Apache Airavata Apache Airavata это фреймворк выполнения и управления заданиями в распределенных ресурсах, таких как кластеры, суперкомпьютеры, national grids, академические и комерческие облака. Лицензия: Apache 2Лицензия совместима с закрытым ПО

13. Cluster Management

 

Фреймворки для динамического управления приложением внутри класстера.
К оглавлению

 

  1. Apache Aurora — Apache Aurora это Apache Mesos фреймворк для длительных сервисов и cron jobs, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  2. Singularity — Singularity это Apache Mesos фреймворк, который делает разработку и обслуживание проще. Он поддерживает вебсервисы, фоновое выполнение, запуск задач по расписанию и выполнение одноразовых задач, Лицензия: неизвесна, на сайте не найдена!.
  3. Apache Helix Это фреймворк управления кластером. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  4. Apache Airavata Apache Airavata это фреймворк выполнения и управления заданиями в распределенных ресурсах, таких как кластеры, суперкомпьютеры, national grids, академические и комерческие облака. Лицензия: Apache 2Лицензия совместима с закрытым ПО

14. Работа с документами (XLS, DOC, PDF и т.п.)](#14-document-processing-xls-doc-and-pdf)

 

Libraries that assist with processing office document formats.

 

  1. Apache POI — Поддерживает OOXML (XLSX, DOCX, PPTX) так же как и OLE2 (XLS, DOC or PPT), Лицензия: Apache 2Лицензия совместима с закрытым ПО
  2. documents4j — API для конверторов в разные форматы документов, используя third-party конверторы такие как MS Word, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  3. Docx4j Docx4j библиотека для работы с Microsoft OpenXML файлами (Word docx, Powerpoint pptx, и Excel xlsx) через JAXB. Лицензия: Apache 2business friendly license
  4. jOpenDocument — Работа с OpenDocument формата, Лицензия: GNU или платная лицензия для коммерческого использования. Не соместимая с закрытым ПО лицензия ИЛИ Проприетарная лицензия
  5. Apache Tika The Apache Tika это набор инструмнтов для получение метаданных и структурированого теста из различных видом документов, используя разные парсеры (Apache cTAKES,OpenNLP и т.п.). Лицензия: Apache 2Лицензия совместима с закрытым ПО

 

PDF

 

Everything that helps with the creation of PDF files.
К оглавлению

 

  1. Apache FOP — Создание PDF из XSL-FO, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  2. Apache PDFBox — Набор инструментов для создания и изменения PDF, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  3. DynamicReports — Улучшение JasperReports, Лицензия: GNU Lesser 3Лицензия совместима с закрытым ПО
  4. flyingsaucer — lying Saucer это Java библиотека для использования XML или XHTML с использованием CSS 2.1 для генерации PDF, изображений или Swing panels. Лицензия: GNU Lesser 2.1Лицензия совместима с закрытым ПО
  5. iText — Создание PDF файлов из программы, но требует лицензию для комерчиского использования, Лицензия: AGPL или платная лицензия для комерческого использования. Не соместимая с закрытым ПО лицензия ИЛИ Проприетарная лицензия
  6. JasperReports — Комплексный движок отчетов, Лицензия: GNU LesserЛицензия совместима с закрытым ПО

15. Работа с нативным API разных ОС](#15-native)

 

For working with platform-specific native libraries.
К оглавлению

 

  1. Java Native Access (JNA) Java Native Access — система доступа к нативному API. Так же предоставляет интерфейсы к основным системых библиотекам. Лицензия: GNU Lesser 2.1 или Apache 2Лицензия совместима с закрытым ПО, рейтинг github’а — 1750. Лицензия совместима с закрытым ПО
  2. JNR — Работа с нативными библиотеками без использвания JNI. Так же предоставляет интерфейсы к основным системых библиотекамs. Те же задачи что у JNA, но работает быстрее, и служит основой для разрабатываемого Project Panama, Лицензия: Apache 2Лицензия совместима с закрытым ПО

16. XML и SOAP

 

  1. Xalan Xalan-J это XSLT processor, написанный на Java. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  2. Xerces Xerces-J это validating XML парсер, написанный на Java. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  3. XML Graphics Конвертация XML в графическое представление. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  4. Santuario Библиотека реализующая XML Digital Signature спецификацию и XML Encryption спецификацию. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  5. VXQuery Apache VXQuery реализует параллельный XML Query processor. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  6. Apache Axis Веб контейнер который помогает создавать, развертывать и запускать вебсервисы. Axis2 это Web Services / SOAP / WSDL движок. Лицензия: Apache 2Лицензия совместима с закрытым ПО

17. Интеграция с сервисами геопозиционирования

 

Библиотеки для работы с сервисами геопозиционирования.

 

  1. Apache SIS — Библиотека для разработки приложений геопозиционирования. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  2. Geo — GeoHash утилиты для Java. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  3. Geotoolkit.org — Библиотека для разработки приложений геопозиционирования. Работает на основе Apache SIS проекта. Лицензия: GNU Lesser 2.1Лицензия совместима с закрытым ПО
  4. GeoTools — Библиотека предоставляющая инструменты для получения данных геопозиционирования. Лицензия: GNU Lesser 2.1Лицензия совместима с закрытым ПО
  5. H2GIS — Геопозиционированое расширение для базы данных H2. Лицензия: GPL 3impossible proprietary code linking license
  6. Jgeohash — Библиотека, помогающая Java разработчикам в использовании GeoHash алгоритмов. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  7. JTS Topology Suite — API для 2D геопозиционирования. Лицензия: GNU Lesser 3Лицензия совместима с закрытым ПО
  8. Mapsforge — Продукт для геопозиционирования на карте, основанной на OpenStreetMap данных. Лицензия: GNU Lesser 3Лицензия совместима с закрытым ПО
  9. Spatial4j — Универсальная библиотека геопозиционирования. Лицензия: Apache 2Лицензия совместима с закрытым ПО

IV. Тестирование

1. Тестирование

 

К оглавлению

 

  1. Junit Простой и популярный фреймворк для unit тестирования. Лицензия:  Eclipse Public 1.0, рейтинг github’а — 3662. Лицензия совместима с закрытым ПО
  2. Mockito Mocking фреймворк для unit тестов, написанных на Java. Лицензия: MIT, рейтинг github’а — 1307. Лицензия совместима с закрытым ПО
  3. Selenium Фреймворк для автоматического тестирования в браузере. Лицензия: Apache 2, рейтинг github’а — 1305. Лицензия совместима с закрытым ПО
  4. Cucumber jvm Портирование Cucumber фреймворка для JVM. Лицензия: MIT, рейтинг github’а — 1047. Можно использовать в коммерческом закрытым ПО
  5. Spock Spock это фреймворк тестирования и создания спецификаций для Java и Groovy приложений. Лицензия: Apache 2, рейтинг github’а — 669. Лицензия совместима с закрытым ПО
  6. Google Firing range Google Firing Range это тестовый вебсервер для приложений-сканеров уязвимостей вебсайтов. Firing Range создает широкий спектр синтетических уязвимостей. Лицензия: Apache 2, рейтинг github’а — 650. Лицензия совместима с закрытым ПО
  7. Fitnesse FitNesse это система тестирования, вебсервер и вики. Лицензия: CPL-1.0, рейтинг github’а — 618.
  8. Sikuli Sikuli служит для написания скриптов, служащих для автоматизации работы со всем что вы ведите на экране… Лицензия: MIT, рейтинг github’а — 609. Лицензия совместима с закрытым ПО
  9. JavaHamcrest Hamcrest это фреймворк для создания условий и правил в программных тестах, написанных на Java, он позволяет создать сложные выражения для этих условий (assertion matcher), которые потом могут использовать в системах unit тестирования, таких как JUnit или jMock.. Лицензия: BSD 3, рейтинг github’а — 561. Лицензия совместима с закрытым ПО
  10. Wiremock Инструментарий для создания mock’ов (заглушек для тестирования) HTTP сервисов. Лицензия: Apache 2, рейтинг github’а — 508. Лицензия совместима с закрытым ПО
  11. Testng TestNG фреймворк для тестирования. Лицензия: Apache 2, рейтинг github’а — 477. Лицензия совместима с закрытым ПО
  12. Galenframework Galen Galen Framework это мощный фреймворк для автоматического тестирования дизайна и функционала вебсайтов. Использует Selenium для работы с браузером и автоматического тестирования вебсайтов. Лицензия: Apache 2, рейтинг github’а — 449. Лицензия совместима с закрытым ПО
  13. AssertJ AssertJ это библиотека предоставляющая мощный механизм работы с условиями (assertion) для тестовых фреймворков. Лицензия: Apache 2, рейтинг github’а — 423. Лицензия совместима с закрытым ПО
  14. Google truth Фреймворк для задания ограничений и утверждений (Assertion/Proposition) в Unit тестах (версия ещё очень альфа, может быть полностью изменена ). Лицензия: Apache 2, рейтинг github’а — 394. Лицензия совместима с закрытым ПО
  15. Apache JMeter — Функциональное тестирование и замеры производительности. Лицензия: Apache 2Лицензия совместима с закрытым ПО
  16. Arquillian — Интеграционная и функциональная платформа тестирования Java EE контейнеров, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  17. Awaitility — DSL для синхронизации ассинхроных операций, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  18. Citrus — Фреймворк интеграционного тестирования, которой фокусируется на тестировании клиент-серверного обмена сообщениями, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  19. Cucumber — BDD фреймворк тестирования, Лицензия: MITЛицензия совместима с закрытым ПО
  20. Gatling — Содержит инструменты тестирования разработанные для легкого использования, легкого сопровождения и высокой производительности, Лицензия: MITЛицензия совместима с закрытым ПО
  21. GreenMail — In-memory email сервер для интеграционного тестирования, поддерживает SMTP, POP3 и IMAP включая SSL, Лицензия: MITЛицензия совместима с закрытым ПО
  22. JGiven — Удобный для разработчиков BDD фреймворк тестирования совместимый с JUnit и TestNG, Лицензия: MITЛицензия совместима с закрытым ПО
  23. JMockit — Создает мock’и статических и финальных методов, а так же многое другое, Лицензия: MITЛицензия совместима с закрытым ПО
  24. JUnitParams — Облегчает создание читабельных и легких в поддержке параметризованных тестов, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  25. Moco — Создание лаконичных вебсервисов для тестирования (stubs и mocks), награжден Duke’s Choice Award 2013, Лицензия: MITЛицензия совместима с закрытым ПО
  26. PIT — Быстрый мутационный фреймворк тестирования с возможностью обнаружения ошибок в написании существующих JUnit или TestNG тестах, Лицензия: Creative Commons License.
  27. PowerMock — Позволяет создание mock’ов статических методов, финальных классов и методов, приватных классов и удаление статических инициализаторов, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  28. REST Assured — Java DSL для легкого тестирования REST/HTTP сервисов, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  29. Selenide — Краткое API над Selenium, позволяющее писать стабильные и читабельные UI тесты, Лицензия: MITЛицензия совместима с закрытым ПО
  30. Unitils — Модульная библиотека тестирования для unit и интеграционного тестирования, Лицензия: Apache 2Лицензия совместима с закрытым ПО

2. Code Coverage

 

Фреймворки и инструменты для получения набора code coverage метрик для тестов.
К оглавлению

 

  1. JaCoCo — Фреймворк, который позволяет собирать метрики покрытия кода тестами, используя как offline, так и runtime байткод инструменты, используется в EclEmma, плагине Eclipse для определения степени покрытия тестами, Лицензия: Eclipse Public License v1.0Apache 2BSDЛицензия совместима с закрытым ПО
  2. Clover — Проприетарный инструмент для определения степени покрытия кода тестами от Atlassian, который основан на анализе исходного кода вместо анализа байткода, Лицензия: платная, проприетарная Проприетарная лицензия
  3. Cobertura — Использует автономный (или статическый) инструментарий анализа байткода и class loading’a для получения метрик покрытия кода тестами, Лицензия: GNU 2Не соместимая с закрытым ПО лицензия
  4. JCov — Набор инструментов для анализа покрытия кода тестами, который используется при разработке OpenJDK проекта, Лицензия: GNU 2Не соместимая с закрытым ПО лицензия

3. Continuous Integration

 

Набор инструментов, поддерживающих непрерывную сборку, тестирование и релизы приложений.
К оглавлению

 

  1. Bamboo — Atlassian’s решение с хорошей интеграцией с другими продуктами этой компании. Можно использовать либо подав заявку на бесплатную лицензию или просто купив его, Проприетарная лицензия
  2. CircleCI — Cервис хостинга CI с бесплатным тестовым сроком, Проприетарная лицензия
  3. Codeship — Cервис хостинга CI с ограниченными бесплатными планами. Проприетарная лицензия
  4. fabric8 — Интеграционная платформа для контайнеров, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  5. Go — Открытое решение от ThoughtWork. Есть платная поддержка, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  6. Jenkins — Предоставляет серверное решение для развертывания сервисов, Лицензия: MITЛицензия совместима с закрытым ПО
  7. TeamCity — JetBrain’s CI решение с бесплатной версией для open-source продуктов, Лицензия: Проприетарная, платная Проприетарная лицензия
  8. Travis — Cервис хостинга CI, который часто использует в открытых продуктах, Лицензия: ?
  9. Hudson — Сервер непрерывной реализации для активной разработки, Лицензия: Eclipse Public License v1.0Можно использовать в коммерческом закрытым ПО
  10. Apache Continuum Сервер непрерывной реализации от Apache. Лицензия: Apache 2Лицензия совместима с закрытым ПО

4. Formal Verification

 

  • Инструменты для формальной верефикации: proof assistants, model checking, symbolic execution и т.п.*
    К оглавлению

 

  1. CATG — Concolic unit тест движок. Автоматически генерит unit тесты, используя ряд формальных методов, Лицензия: BSD 2, Лицензия: BSD 2Лицензия совместима с закрытым ПО
  2. Checker Framework — Легко настраиваемая плагинами система типов, включет nullness типы, physical units, неизменяемые типы и прочее, Лицензия: GNU 2Не соместимая с закрытым ПО лицензия
  3. Daikon — Daikon обнаруживает различные программные invariants и мрдет генерировать JML спецификации, основанные на этих invariats, Лицензия: GNUНе соместимая с закрытым ПО лицензия
  4. Java Modeling Language (JML) — Интерфейс поведенческих спецификаций, который может исопльзоваться для определения желаемого поведения программных модулей. Он комбинирует подход контрактного дизайна приложения от Eiffel и подход спецификаций модели, основанных на семействе Larch языков описания спецификаций интерфейсов, с некоторыми элементами от refinement calculus. Используется в некоторых других системах верефикации, Лицензия: GNU 2Не соместимая с закрытым ПО лицензия
  5. Java Path Finder (JPF) — JVM инструмент formal верефикации, который содержит проверки модели и прочее. Созданн НАСА., Лицензия: NASA OPEN SOURCE AGREEMENT VERSION 1.3
  6. jCUTE — Concolic unit тест движок. Автоматически генерит unit тесты. Concolic выполнение комбинирует случайное concrete execution с symbolic execution и automatic constraint solving, Лицензия: Проприетарная, бесплатная для целей обучения и т.п. Проприетарная лицензия
  7. JMLOK 2.0 — Обнаруживает несоответствий между кодом и спецификацией JML с помощью генерации случайных тестов с обратной связью и предлагает возможные причины, вызывающие обнаруженные несоотвествия, Лицензия: GNU 3Не соместимая с закрытым ПО лицензия
  8. KeY — KeY System это инструмент формальной верефикации основными целями которого являются интеграция дизайна, имплементации, формальной спецификации и формальная верефикация ООП настолько легко, насколько это возможно. Использует JML для спецификаций и symbolic execution для верефикации, Лицензия: GNUНе соместимая с закрытым ПО лицензия
  9. OpenJML — Преобразует JML спецификации в SMT-LIB формат и находит проблемы и передает описание проблем к backend решателю, Лицензия: GNU 2 и Eclipse Public License v1.0Не соместимая с закрытым ПО лицензия

V. Инструменты для упрощения разработки

1. IDE

 

К оглавлению

 

  1. JetBrains Intellij Сommunity IntelliJ IDEA Community Edition — одна из лучший IDE для Java. http://www.jetbrains.com/idea/ Лицензия: Apache 2, рейтинг github’а — 2068. Лицензия совместима с закрытым ПО
  2. JetBrains Ideavim Плагин, эмулирующий Vim для IDE, основанных на IntelliJ платформе. Лицензия: GNU 2, рейтинг github’а — 1199. Не соместимая с закрытым ПО лицензия
  3. Rstudio RStudio это IDE для языка R. Лицензия: GNU AGPLv3, рейтинг github’а — 1048. Не соместимая с закрытым ПО лицензия
  4. Vrapper Плагин по добавлению Vim-подобного редактора в Eclipse. Лицензия: GNU 3.0, рейтинг github’а — 669. Не соместимая с закрытым ПО лицензия
  5. Eclipse themes Jeeeyul’s Eclipse Themes (прошлое имя Eclipse Chrome Theme) это возможность настроить каждую деталь Eclipse’а. Лицензия: Eclipse Public 1.0, рейтинг github’а — 623. Лицензия совместима с закрытым ПО
  6. Eclipse color theme Eclipse Color Theme позволяет легко импортировать и удобно менять цветовые темы без побочных эфектов. Лицензия: Eclipse Public 1.0, рейтинг github’а — 614. Лицензия совместима с закрытым ПО
  7. Eclim Добавление в редактор Vim возможностей Eclipse IDE. Лицензия: GNU 3, рейтинг github’а — 590. Не соместимая с закрытым ПО лицензия
  8. JetBrains MPS JetBrains MPS (Meta programming System) служит для быстрой разработки DSL (Domain Specific Language) для любого окружения и с возможностью скомпилировать DSL в множество языков, таких как Java, C, XML и другие. Лицензия: Apache 2, рейтинг github’а — 525. Лицензия совместима с закрытым ПО
  9. Idea markdown Поддержка языка разметки Markdown в IntelliJ IDEA… Лицензия: Apache 2, рейтинг github’а — 405. Лицензия совместима с закрытым ПО
  10. Eclipse — Популярная открытая IDE поддерживающая большое количество плагинов и языков программирования, Лицензия: Eclipse Public License v1.0Лицензия совместима с закрытым ПО
  11. NetBeans — IDE поддерживает большое количество различных возможностей для разработки Java SE и EE приложений от работы с базой данных до работы с HTML5, Лицензия: GNU 2 или CDDL 1.0Не соместимая с закрытым ПО лицензия

2. Инструменты и библиотеки для сборки, конфигурирования и развертывания Java приложений

 

К оглавлению

Build

 

Инструменты для сборки проекта (build) и работы с зависимостями(dependencies) приложения.

 

  1. Apache Maven — Система декларативной сборки и управления зависимостями, которая упрощает конфигурирование приложения. Это может быть предпочтительнее Apache Ant, используещего более процедурный подход, который сложнее поддерживать в большинстве случаев. Лицензия: Apache 2, рейтинг github’а — 614. Лицензия совместима с закрытым ПО
  2. Google Bazel — Инструмент для сборки от Google, который позволяет собирать код быстро и надежно. Корректная, воспроизводимая и быстрая билд система для любых ситуаций Лицензия: Apache 2, рейтинг github’а — 2809. Лицензия совместима с закрытым ПО
  3. Gradle — Система инкрементальной сборки, использующая для конфигурирования Groovy вместо XML. Хорошо совместима с Maven конфигурациями. Лицензия: Apache 2, рейтинг github’а — 2465. Лицензия совместима с закрытым ПО
  4. Apache Ant — Инструмент для сборки проиложений, использующий XML для конфигурационных файлов, раньше был очень популярен, сейчас используется довольно редко. Подпроекты: Apache AntUnit — система тестирования файлов ant’a, Apache Compress Ant Library — дополнительные форматы архивов и сжатия, Apache Ivy — работа с зависимостями, Apache IvyDE — плагин Ivy для Eclipse. Лицензия: Apache 2Можно использовать в коммерческом закрытым ПО
  5. Facebook Buck — система сборки, упрощающая создание небольших, повторно используемых модулей. Лицензия: Apache 2, рейтинг github’а — 1449. Лицензия совместима с закрытым ПО
  6. Archiva Apache The Build Artifact Repository Manager. Apache Archiva — расширяемый репозиторий артефактов сборки, идеально совместим с такими средствами сборки как Maven, Continuum и ANT. Лицензия: Apache 2Можно использовать в коммерческом закрытым ПО

Configuration

 

Библиотеки, управлящие конфигурированием
К оглавлению

 

  1. config — Конфигурационная библиотека для JVM языков. Лицензия: Apache 2, рейтинг github’а — 614. Лицензия совместима с закрытым ПО
  2. owner — Уменьшение бесмысленного типового кода для работы с properties, Лицензия: BSD 3Лицензия совместима с закрытым ПО
  3. Netflix Archaius — библиотека, реализующая API для управления конфигурациями, используется Netflix. Лицензия: Apache 2, рейтинг github’а — 614. Лицензия совместима с закрытым ПО
  4. LightAdmin — Легко настраиваемя CRUD UI библиотека для быстрой разработки приложений, Лицензия: Apache 2Можно использовать в коммерческом закрытым ПО
  5. Apache Yetus Коллекция библиотек и инструменов для управления contribution и release процессами. Лицензия: Apache 2Можно использовать в коммерческом закрытым ПО

Distribution

 

Инструменты для работы с развертыванием (distribution) приложений в нативные форматы.
К оглавлению

 

  1. Bintray — Контроль версий для бинарных файлов, так же может использовать вместе с Maven или Gradle и имеет свободный план для открытого ПО, а так же ряд различных бизнес планов, Лицензия: проприетарная платная, есть бесплатная версия для открытых продуктов Проприетарная лицензия
  2. Capsule — это система сборки приложения в один выполняемый JAR файл со всеми артефактами, ресурсами, нативными библиотеками и т.п. Простой и мощный инструмент для packaging и deployment. Толстый JAR на стероидах или «Docker для Java», который поддерживает JVM-оптимизированные контейнеры, рейтинг github’а — 576. Лицензия: Eclipse Public License v1.0Лицензия совместима с закрытым ПО
  3. Central Repository — Огромный бинарный репозеторий компонентов, который доступен как свободный сервис для проектов с открытым ПО. Используется Apache Maven и доступно для всех остальных инструментов сборки, Лицензия: проприетарная Проприетарная лицензия
  4. IzPack — Широко используемый набор инструментов для многоплатформенного развертывания приложений (deployments). Лицензия: Apache 2, рейтинг github’а — 614. Лицензия совместима с закрытым ПО
  5. JitPack — Простой в использовании репозиторий пакетов для GitHub. Собирает Maven / Gradle проекты и публикует их в готовых к использованию пакетах. Лицензия: Apache 2, рейтинг github’а — 614. Лицензия совместима с закрытым ПО
  6. Launch4j — Преобразует JARs файлы в легковесные и нативные исполнянмые файлы Windows
    , Лицензия: BSD 3 и MITЛицензия совместима с закрытым ПО
  7. Nexus — Усправления бинарными файлами с прокси и кэшированием, Лицензия: проприетарная платная Проприетарная лицензия
  8. packr — Преобразование JARs, assets и JVM в нативные приложения Windows, Linux и Mac OS X, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  9. Spotify Helios это Docker orchestration платформа для развертывания и управления контейнерами с помощью HTTP API или командной строки. Лицензия: Apache 2, рейтинг github’а — 952. Лицензия совместима с закрытым ПО

3. Инструменты для оптимизации производительности

 

Библиотеки для оптимизации и решения проблем с производительностью
К оглавлению

 

  1. Square Leakcanary утилита для поиска ошибок из-за которых происходит memory leak для Android и Java. Лицензия: Apache 2, рейтинг github’а — 4168. Лицензия совместима с закрытым ПО
  2. Dropwizard Metrics — библиотека для замера различных метрик в Java приложении для простого понимания что и как код делает во время продакшена. . Лицензия: Apache 2, рейтинг github’а — 3188. Лицензия совместима с закрытым ПО
  3. GCViewer Форк Tagtraum GCViewer — небольшой инструмент для подробной визуализации GC (garbage collector) логов (включая G1 collector). Лицензия: GNU Lesser 2.1, рейтинг github’а — 990. Лицензия совместима с закрытым ПО
  4. AdoptOpenJDK Jitwatch Анализатор логов Java HotSpot JIT компилятора, показывающий результаты используя JavaFX интерфейс. Лицензия: BSD 2, рейтинг github’а — 547. Лицензия совместима с закрытым ПО
  5. Naver Pinpoint это APM (Application Performance Management) инструмент мониторинга производительности крупномасштабных распределенных систем, написанных на Java. Создан на основе Google’s Dapper paper… Лицензия: Apache 2, рейтинг github’а — 486. Лицензия совместима с закрытым ПО
  6. jHiccup — Логирование и запись проблем с производительностью и потерь скорости у JVM, Лицензия: BSD 2Лицензия совместима с закрытым ПО
  7. JMH — Microbenchmarking инструмент для JVM, Лицензия: GNU 2Не соместимая с закрытым ПО лицензия
  8. LatencyUtils — Утилиты для измерения времени отклика приложения и составления отчетов, Лицензия: BSD 2Лицензия совместима с закрытым ПО
  9. VisualVM — Визуальный интерфейс, показывающий детальную информацию о запущенных приложениях.Лицензия: GNU 2 with the Classpath Exception.
  10. JProfiler — Платный профайлер. Лицензия: Проприетарная платная, есть бесплатная версия для open source проектовПроприетарная лицензия
  11. YourKit Java Profiler — Платный профайлер. Лицензия: Проприетарная платная, есть бесплатная версия для open source проектов, спец.планы для научных и академических целейПроприетарная лицензия
  12. XRebel — Платный профайлер. Лицензия: Проприетарная платнаяПроприетарная лицензия

4. Анализ исходного кода

 

К оглавлению

 

  1. SonarQube это свободная платформа для управлением качеством кода. http://www.sonarqube.org Лицензия: GNU Lesser 3, рейтинг github’а — 655. Лицензия совместима с закрытым ПО
  2. Google Error prone — обнаружение типовых ошибок в Java коде. Лицензия: Apache 2, рейтинг github’а — 590. Лицензия совместима с закрытым ПО
  3. OpenGrok Это быстрый и полезные поиск в исходном коде проекта, поиск кросс-ссылок в классах и навигации по дереву исходного кода, он поддерживает разные системы управления кодов, такие как SCCS, RCS, CVS, Subversion, Mercurial и т.п.c… Лицензия: CDDL 1.0, рейтинг github’а — 570.
  4. Checkstyle — Статический анализ на соблюдения стандартов и конвенций по написанию кода, Лицензия: GNU Lesser 2.1Лицензия совместима с закрытым ПО
  5. FindBugs — Статический анализ байткода для поиска потенциальных ошибок. Лицензия: GNU LesserЛицензия совместима с закрытым ПО
  6. jQAssistant — Статический анализатор кода с основанном на Neo4J языке запросов, Лицензия: GNU 3Не соместимая с закрытым ПО лицензия
  7. PMD — Анализ исходного кода для поиска плохих практик программирования, Лицензия: BSD 4Лицензия совместима с закрытым ПО

5. Monitoring

 

Инструменты для мониторинга приложений в production.
К оглавлению

 

  1. AppDynamics — Коммерческий монитор производительности. Лицензия: Проприетарная платная, есть бесплатная версия с ограниченной функциональностьюПроприетарная лицензия
  2. JavaMelody — Мониторинг производительности и профайлинг, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  3. jmxtrans — Инструмент для соединения с различными JVMs и запросах их свойств через JMX. Этот язык запросов основан на JSON, что позволяет не-Java программистам получать доступ к JVMs свойствам. Также, этот инструмент поддерживает различные виды вывода данных, включая Graphite, Ganglia, StatsD и многие другие, Лицензия: MITЛицензия совместима с закрытым ПО
  4. Kamon — Инструменты для мониторинга приложений запущенных на JVM, Лицензия: Apache 2Лицензия совместима с закрытым ПО
  5. New Relic — Коммерческий монитор производительности. Лицензия: Проприетарная платная, с двумя неделями пробного периода Проприетарная лицензия
  6. SPM — Коммерческий монитор производительности с отладкой распределенных транзакций в JVM приложениях. Лицензия: Проприетарная платная, есть бесплатная версия с ограниченной функциональностьюПроприетарная лицензия
  7. Takipi — Коммерческий мониторинг ошибок и отладка в продашен режиме. Лицензия: Проприетарная платная, есть бесплатная версия с ограниченной функциональностью и пробный период в две недели у полной версии Проприетарная лицензия

6. Переопределение загруженных классов

 

К оглавлению

 

  1. Dynamic Code Evolution Virtual Machine (DCE VM) — Модификация JVM, которая позволяет неограниченное переопределение загруженных классов во время выполнения. Лицензия: GNU 2Не соместимая с закрытым ПО лицензия
  2. DCEVM — Форк DCEVM. Модификация JVM, которая позволяет неограниченное переопределение загруженных классов во время выполнения, Лицензия: GNU 2Не соместимая с закрытым ПО лицензия
  3. HotswapAgent — Неограниченное переопределение классов и ресурсов во время выполнения, Лицензия: GNU 2Не соместимая с закрытым ПО лицензия
  4. JRebel — Коммерческое программное обеспечение, которое позволяет неограниченно перезагружает код и изменять конфигурацию без перезагрузки сервера, Лицензия: Проприетарная, платное ПО,Проприетарная лицензия
  5. Spring Loaded — Агент для повторой перезагруки классов, Лицензия: Apache 2Лицензия совместима с закрытым ПО

7. Прочее

 

К оглавлению

 

  1. Google J2ObjC: Java to Objective-C Translator and Runtime — конвертация языка Java (включая Android) в Objective-C… Лицензия: Apache 2, рейтинг github’а — 2940. Лицензия совместима с закрытым ПО
  2. Bytecode viewer Система для реверс-инженеринга Java и Android (декомпилятор, редактор, отладчик и т. д.). Лицензия: GNU 3, рейтинг github’а — 617. Не соместимая с закрытым ПО лицензия
  3. Reflections сканирует ваш classpath, индексирует метаданные и позволяет строить запросы во время выполнения к метаданным, может сохранять информацию о метаданных вашего проекта. Лицензия: WTFPL, рейтинг github’а — 514. Лицензия совместима с закрытым ПО

 

Current implementations of the JVM/JDK.

 

  1. JDK 9 — Ранний доступ к версии JDK 9., Лицензия: GNU 2Не соместимая с закрытым ПО лицензия
  2. OpenJDK — Oткрытая реализация Java для Linux., Лицензия: GNU 2Не соместимая с закрытым ПО лицензия
  3. Zulu OpenJDK — OpenJDK реализация для Windows, Linux и Mac OS X включая Java 8, Лицензия: GNU 2Не соместимая с закрытым ПО лицензия
  4. Zulu OpenJDK 9 — Ранний доступ к версии OpenJDK 9 для Windows, Linux и Mac OS X, Лицензия: GNU 2Не соместимая с закрытым ПО лицензия

VI. Языки программирования и приложения, написанные на Java

1. Языки программирования, написанные на Java

 

К оглавлению

 

  1. Clojure Язык программирования Clojure. . Лицензия: Apache 2, рейтинг github’а — 4332. Лицензия совместима с закрытым ПО
  2. JetBrains Kotlin Язык программирования Kotlin. Лицензия: Apache 2, рейтинг github’а — 1621. Лицензия совместима с закрытым ПО
  3. Gocd Основной репозиторий для сборки Go программ. Лицензия: Apache 2, рейтинг github’а — 1602. Лицензия совместима с закрытым ПО
  4. Groovy core Язык программирования Groovy. Лицензия: Apache 2, рейтинг github’а — 1327. Лицензия совместима с закрытым ПО
  5. Jphp compiler Jphp Альтернативный вариант Zend PHP для JVM, такой же как JRuby и Jython но только для PHP. Лицензия: Apache 2, рейтинг github’а — 969. Лицензия совместима с закрытым ПО
  6. Trifork Erjang Виртуальная JVM машина для языка Erlang. Лицензия: Apache 2, рейтинг github’а — 484. Лицензия совместима с закрытым ПО

2. Утилиты для других языков программирования, написанные на Java

 

К оглавлению

 

  1. Go lang idea plugin IDE для языка программирования Goole Go, созданная на основе IntelliJ Platform. Лицензия: Apache 2, рейтинг github’а — 1717. Лицензия совместима с закрытым ПО
  2. Processing js Портирование Processing библиотеку для работы с видео и изображениями в JavaScript… Лицензия: MIT, рейтинг github’а — 1696. Лицензия совместима с закрытым ПО
  3. Pysonar2 PySonar2 это система индексирования и получения типов в Python, которая проводить сложный анализ с помощью Sourcegraph сотен тысяч открытых Python репозиториев. Лицензия: GNU GNU AGPLv3, рейтинг github’а — 1654. Не соместимая с закрытым ПО лицензия

3. Javascript

 

К оглавлению

 

  1. Yuicompressor YUI Compressor — это система сжатия JavaScript и CSS файлов, которая удаляет лишние пробелы, безопасно обфуцирует локальные переменные до минимального возможного имени и т. д… Лицензия: BSD, рейтинг github’а — 1840. Лицензия совместима с закрытым ПО
  2. Google Closure compiler Библиотека проверки JavaScript кода и его оптимизации. Лицензия: Apache 2, рейтинг github’а — 1442. Лицензия совместима с закрытым ПО
  3. Frontend maven plugin Maven плагин который скачивает и устанавливает Node и NPM локально и запускает NPM install, Grunt, Gulp и/или Karma. Лицензия: Apache 2, рейтинг github’а — 586. Лицензия совместима с закрытым ПО
  4. Dynjs Среда выполнения ECMAScript для JVM. Лицензия: Apache 2, рейтинг github’а — 533. Лицензия совместима с закрытым ПО

4. Фреймворки для создания парсеров, интерпретаторов и компиляторов кода

 

К оглавлению

 

  1. ANTLR — Многоцелевой полноценный фреймворк для top-down парсинга, Лицензия: BSD 2Лицензия совместима с закрытым ПО
  2. JavaCC — Более специфичный и простой в обучении, имеет синтаксический предпросмотр, Лицензия: BSD Лицензия совместима с закрытым ПО

5. Приложения и готовые продукты написанные на Java

 

К оглавлению

 

  1. Square Keywhiz — cистема для хранения и управления секретными данными (TLS сертификаты, GPG ключи, API токены, данные доступа к базам данным). Лицензия: Apache 2, рейтинг github’а — 979. Лицензия совместима с закрытым ПО
  2. Rundeck это автоматический сервис-планировщик по управлению заданиями, job’aми с вебконсолью, инструментами командной строки и WebAPI.. Лицензия: Apache 2, рейтинг github’а — 853. Лицензия совместима с закрытым ПО
  3. KeyBox это SSH вебконсоль, которая используется для административного доступа в систему. Лицензия: Apache 2, рейтинг github’а — 792. Лицензия совместима с закрытым ПО
  4. OpenTripPlanner это свободный планировщик поездок, поддерживает открытые стандартные форматы файлов (GTFS и OpenStreetMap), также включает REST API для планирования путишествий, как и Javascript клиент. Лицензия: Apache 2, рейтинг github’а — 704. Лицензия совместима с закрытым ПО
  5. Netflix Servo обеспечивает простой интерфейс для получения и публикации параметров приложений Netflix. Лицензия: Apache 2, рейтинг github’а — 681. Лицензия совместима с закрытым ПО
  6. Jitsi программа, обеспечивающее текстовую, голосовую и видеосвязь с разными протоколами SIP, XMPP/Jabber, AIM/ICQ, IRC, Yahoo! и много других возможностей. Лицензия: Apache 2, рейтинг github’а — 676. Лицензия совместима с закрытым ПО
  7. Netflix Exhibitor это система для ZooKeeper, обеспечивающая мониторинг, архивирование и восстановление, очистку и визуализацию. Лицензия: Apache 2, рейтинг github’а — 610. Лицензия совместима с закрытым ПО
  8. Glyptodon Guacamole client — клиент, который позволяет работать с удаленным рабочим столом через браузер без установки какого-либо программного обеспечение. Использует HTML5, JavaScript и Java. Лицензия: MIT, рейтинг github’а — 556. Лицензия совместима с закрытым ПО
  9. Bateman — простая система торговли акциями, которая оптимизирует свои параметры, используя particle swarm оптимизацию. Лицензия: MIT, рейтинг github’а — 543. Лицензия совместима с закрытым ПО
  10. Java repl — реализация Read Eval Print Loop (простой интерактивной среды программирования, которая сразу вычисляет введенные пользователем выражения) для Java. Лицензия: Apache 2, рейтинг github’а — 536. Лицензия совместима с закрытым ПО
  11. Seyren это оболочка для управления предупреждениями (alert) для Graphite, поддерживает много каналов нотификации: Email, Flowdock, HipChat, HTTP, Hubot, IRCcat, PagerDuty, Pushover, SLF4J, Slack, SNMP, Twilio. Лицензия: Apache 2, рейтинг github’а — 527. Лицензия совместима с закрытым ПО
  12. Graphhopper это быстрая и эффективно использующий память программа определения лучшего дорожного маршрута на Java. По умолчанию использует данный OpenStreetMap, но существует импорт и из других источников. Лицензия: Apache 2, рейтинг github’а — 506. Лицензия совместима с закрытым ПО
  13. Ttorrent это Java реализация BitTorrent протокола, BitTorrent tracker и BitTorrent клиента. Лицензия: Apache 2, рейтинг github’а — 460. Лицензия совместима с закрытым ПО
  14. Geoserver это приложение, написанное на Java, которое используется для обмена и редактирования geo данных. Лицензия: GNU 2.0, рейтинг github’а — 435. Не соместимая с закрытым ПО лицензия
  15. Languagetool — система стилистической и грамматической проверки текста более чем на 25 разных языках (английский, франц узкий, немецкий, русский, польский и т. д.). Лицензия: GNU Lesser 2.1, рейтинг github’а — 416. Лицензия совместима с закрытым ПО
  16. Apache OpenMeetings — система с открытым кодом для создания видеоконференций, обмена сообщениями и документами компании. Лицензия: Apache 2Лицензия совместима с закрытым ПО

6. Игры, написанные Java

 

К оглавлению

 

  1. Bukkit Мод для Minecraft API. Лицензия: GNU 2, рейтинг github’а — 1600. Не соместимая с закрытым ПО лицензия
  2. MovingBlocks Terasology Terasology это расширение для игры Minecraft. Лицензия: Apache 2, рейтинг github’а — 1070. Лицензия совместима с закрытым ПО
  3. MinecraftForge Модификации для Minecraft. Лицензия: GNU AGPLv2.1, рейтинг github’а — 981. Не соместимая с закрытым ПО лицензия
  4. SpongePowered Sponge Forge мод для Minecraft реализующий SpongeAPI. Лицензия: MIT, рейтинг github’а — 803. Лицензия совместима с закрытым ПО
  5. BuildCraft BuildCraft — расширение для Minecraft. Лицензия: Apache 2, рейтинг github’а — 799. Лицензия совместима с закрытым ПО
  6. Equivalent Exchange 3 pahimar Equivalent-Exchange-3. Моды для Minecraft. Лицензия: Apache 2, рейтинг github’а — 783.
  7. SpongePowered SpongeAPI Minecraft плагин API. Лицензия: Apache 2, рейтинг github’а — 775. Лицензия совместима с закрытым ПО
  8. WorldEdit Редактор игровых карт для Minecraft. Лицензия: GNU Lesser 3, рейтинг github’а — 715. Лицензия совместима с закрытым ПО
  9. Essentials Essentials — Minecraft серверный командный мод — добавлени более 100 команд для использования в игре. Лицензия: GNU 3, рейтинг github’а — 423. Не соместимая с закрытым ПО лицензия
  10. GlowstoneMC Glowstone Сервер для Bukkit Minecraft. Лицензия: MIT, рейтинг github’а — 421. Лицензия совместима с закрытым ПО
  11. Tribal Trouble — Стратегия в реальном времени на Java. Лицензия: GNU 2, рейтинг github’а — 423. Не соместимая с закрытым ПО лицензия

VII. Прочее

1. Примеры исходного кода на java

 

К оглавлению

 

  1. Java design patterns  Очень хорошие примеры и справочник по паттернам разработки. . Лицензия:  MIT, рейтинг github’а — 6341. Лицензия совместима с закрытым ПО
  2. Spring projects Spring mvc showcase Примеры, демонстрирующие возможности Spring MVC веб фреймворка. Лицензия: Apache 2, рейтинг github’а — 1338. Лицензия совместима с закрытым ПО
  3. Javaee7 samples Примеры для Java EE 7. Лицензия: MIT/CDDL/GPLv2, рейтинг github’а — 989.
  4. Algorithms Решение для некоторых общих алгоритмических проблем, написанное на Java… Лицензия: Apache 2, рейтинг github’а — 983. Лицензия совместима с закрытым ПО
  5. WikiSort Быстрее и стабильные алгоритмы сортировки использующие O(1) памяти. Лицензия: unlicense.org, рейтинг github’а — 953.
  6. Spring projects Spring petclinic Примеры Spring приложений. Лицензия: Apache 2, рейтинг github’а — 532. Лицензия совместима с закрытым ПО
  7. Spring projects Spring integration samples Примеры кода и приложений Spring Integration. Лицензия: Apache 2, рейтинг github’а — 517. Лицензия совместима с закрытым ПО
  8. Java algorithms implementation Коллекция алгоритмов и структур данных, написанных на Java. Лицензия: Apache 2, рейтинг github’а — 437. Лицензия совместима с закрытым ПО
  9. Jboss developer Jboss eap quickstarts Простые и рабочие примеры с простой демонстрацией JBoss EAP, Java EE 7 и других подобных технологий. Лицензия: Apache 2, рейтинг github’а — 434. Лицензия совместима с закрытым ПО
  10. Databricks Learning spark Примеры кода для книги Learning Spark. Лицензия: MIT, рейтинг github’а — 412. Лицензия совместима с закрытым ПО
  11. 7guis 7GUIs это проект который рассматривает простоту разработки и полученное юзабилити (usability benchmark) семи типичных GUI задач на разных фреймворках и языках программирования (Java7 +Swing, Clojure+Seesaw, Scala+ScalaFX, Android и т. п.). Задачей сравнить разные подходы к созданию удобного для пользователя GUI. Лицензия: ?, рейтинг github’а — 404.
  12. Spring projects Spring data jpa examples Примеры использования разных возможностей Spring Data JPA. Лицензия: Apache 2, рейтинг github’а — 400. Лицензия совместима с закрытым ПО
  13. Modern Java — A Guide to Java 8 — Популярный Java 8 гайд. Лицензия: MITЛицензия совместима с закрытым ПО

2. Результаты сравнения производительности кода на Java (benchmark)

 

К оглавлению

 

  1. Jvm serializers — бенчмарки и сравнения производительности разных библиотек сериализации в JVM. Лицензия: ?, рейтинг github’а — 970.
  2. YCSB (Yahoo! Cloud Serving Benchmark) — бэнчмарки (тесты производительности) различных облачных сервисов. Лицензия: Apache 2, рейтинг github’а — 869. Лицензия совместима с закрытым ПО

3. Работа с git & github

 

К оглавлению

 

  1. Gitblit Gitblit это свободный Java Git клиент для управления, просмотр и обслуживания Git репозиторий. Лицензия: Apache 2, рейтинг github’а — 787. Лицензия совместима с закрытым ПО
  2. WhisperSystems BitHub BitHub — экспериментальный сервис по сбору Bitcoin пожертвований и распределении этих пожертвований каждому кто коммитит в GitHub репозитории. Лицензия: ?, рейтинг github’а — 491.

VIII Видео доклады и лекции о Java

 

Тут

 

Спасибо за ознакомления со статьей!

 

P.S. Самую последную и обновляемую версию можно найти на github’e на русском и английском. Пишите любые предложения в личку, в комментарии или просто создавайте pull request или issue на github’e.

 

Общее оглавление ‘Шпаргалок’

Публикация артефакта в Maven Central через Sonatype OSS Repository Hosting Service

На написание этой статьи меня сподвигла некоторая разрозненность источников информации по такой
важной, на мой взгляд, теме, как публикация своих артефактов в Maven Central. Конечно, следует
отдать должное сотрудникам Sonatype: их официальный гайд (ссылка в конце статьи) достаточно полно
описывает весь процесс. Но в нём нет некоторых неочевидных тонкостей (вроде проблемы хранения
паролей), и он сам выглядит немного неряшливо. На русском же языке на эту тему ресурсов я не нашёл в
принципе. Лично для меня это не страшно, но многих это может остановить.

Наверное, большинство Java-программистов знает, что такое Maven Central. Для тех, кто не знает:
Maven Central — это огромный репозиторий библиотек для платформы JVM. Кто угодно может выложить
туда библиотеку, если её лицензия позволяет публичное распространение. После этого эту библиотеку
можно указывать как зависимость в системе сборки проекта, такой, как Maven. Тогда при сборке проекта
эта система автоматически скачает библиотеку и скомпилирует ваш проект с её использованием. На мой
взгляд, именно наличие Maven Central есть одна из ключевых причин (если не самая главная) успеха
Java как платформы. Я не знаю более ни одного репозитория, который сравнится с Central по количеству
артефактов и удобству в использовании; единственное, что приходит на ум — это CPAN, Comprehensive
Perl Archive Network, или Haskell’овый Cabal, но это всё же не совсем то.

Кто угодно может выложить в Central библиотеку. Можно даже выкладывать не собственные библиотеки, а
чужие, которые никто ещё не сподобился выложить туда, но только если лицензия библиотеки позволяет
такое распространение. Неделю назад я написал одну библиотеку и решил выложить её в Central. Как
выяснилось, это несколько нетривиальный процесс на первый взгляд, хотя в целом ничего сверхсложного
в нём нет.

Изначально, насколько я понял из остатков документации по этой теме, артефакты в Maven Central
забирались их сервером с помощью rsync. Однако это было признано неудачным решением, и теперь Maven
Central пополняется из нескольких больших доверенных хранилищ артефактов. То, которое нас
интересует, называется Sonatype OSS Repository Hosting Service. Это проект компании Sonatype,
предоставляющий любому желающему возможность поместить свою библиотеку в общий доступ. Сервера Maven
Central регулярно синхронизируются с OSSRH, и те артефакты, которые пользователь помечает как
готовые к релизу, загружаются в центральное хранилище.

Вкратце процедура загрузки своего артефакта в Central выглядит так: нужно зарегистрироваться на
Sonatype JIRA и оставить тикет на открытие репозитория; затем, когда репозиторий откроют, нужно будет
загрузить в него артефакты (вручную или с помощью особой конфигурации системы сборки), а затем нужно
указать, что эти артефакты следует залить в Central.

Репозиториев Sonatype предоставляет два, Snapshots и Staging. Репозиторий Snapshots предназначен для
так называемых снэпшотов, фактически, сборок непосредственно из основной ветки разработки в
системе контроля версий. Репозиторий Staging предназначен для релизов артефактов — тех версий,
которые не будут более меняться. Staging так называется, потому что артефакты из него после проверки
работоспособности нужно «продвинуть» (promote) в Maven Central. Через некоторое время Maven Central
синхронизируется с Sonatype OSSRH, и ваши артефакты появятся в Central.

Рассмотрим все шаги по пунктам.

Создаём тикет на Sonatype JIRA

Первым шагом будет открытие репозитория, в который будут загружаться артефакты для синхронизации с
Central. Это делается через систему тикетов в Sonatype JIRA. Ссылка: http://issues.sonatype.org/.

Сначала там необходимо зарегистрироваться. На открывшейся странице по указанной ссылке нажмите Sign Up. Откроется стандартная форма регистрации. Заполните и отправьте её. Следует учесть, однако, что
в поле Full Name нужно ввести именно полное имя, вроде «Vasiliy Pupkin», в два слова через
пробел. Официальный гайд утверждает, что это из-за проблем с интеграцией между JIRA и нечто под
названием Crowd.

После заполнения и отправки формы вы автоматически окажетесь залогинены в систему. На главной
странице в списке проектов слева можно найти такую ссылку:
https://issues.sonatype.org/browse/OSSRH. Это тот раздел, в котором нужно создать тикет на открытие
репозитория. Для создания тикета нажимаем кнопку New Project. Поля следует заполнить примерно так:

Важный момент: group id я указал общее — org.bitbucket.googolplex, а не
org.bitbucket.googolplex.devourer. Это делается с прицелом на будущее: вдруг вы захотите
опубликовать ещё один свой проект? В таком случае не придётся заводить дополнительных тикетов,
глобальный префикс для репозиториев уже будет принадлежать вам. В принципе, люди, которые работают
над этими тикетами, достаточно адекватные и опытные, поэтому они могут вам поменять group id на
более общий самостоятельно.

В официальной справке говорится, что group id нужно выбирать таким образом, чтобы оно обозначало
домен, контролируемый вами. Это может быть ваш сайт или раздел на сервисе контроля версий вроде
Github или Bitbucket (как у меня, в примере выше). Перед тем, как создавать для вас репозиторий,
имя пакета проверят и напишут, если с ним какие-то проблемы (например, соответствующий сайт
принадлежит не вам).

Через некоторое время сотрудник Sonatype создаст набор репозиториев для вас и закроет тикет. Мне
повезло, мой тикет закрыли практически сразу после его создания. После этого можно будет загружать
артефакты в staging-репозиторий, а оттуда их можно «продвигать» (promote) в Central. Однако перед
тем, как загружать артефакты в репозиторий, их необходимо создать. Для этого нужно правильным
образом настроить мавен, то есть файл pom.xml вашего проекта и, возможно, системный файл
настроек мавена settings.xml.

Создаём и готовим к выгрузке артефакты

Сейчас есть множество систем сборки, умеющих создавать стандартные мавеновские артефакты: Maven,
Buildr, SBT, Gradle, Leiningen и другие. Инструкции ниже верны для Maven версии 3. В статье на вики
Sonatype (ссылка в конце этой статьи) есть инструкции по использованию других систем сборки.

Сущность понятия «артефакт» в контексте мавена очень проста — это всего лишь обычный jar-файл с
дополнительной метаинформацией. Этим описанием артефакта служит так называемый POM, Project Object
Model, представленный файлом pom.xml. Я не буду здесь описывать формат полностью, а только укажу
те части POM, которые должны быть в наличии для успешной загрузки артефакта в Maven Central.

Итак, согласно официальной документации Sonatype, в pom.xml должны присутствовать следующие
секции:

  • Также, если packaging артефакта равен jar, и артефакт содержит классы, то помимо основного
    артефакта следует загрузить -sources.jar и -javadoc.jar. Если это невозможно, например, если не
    позволяет лицензия или если ваш проект написан на Scala, то нужно создать фейковые -sources.jar и
    -javadoc.jar с README-файлом в них и воспользоваться ими.

    Кроме того, в pom.xml не должно быть секций или , потому что
    такая конфигурация может сломать сборку у пользователей вашего артефакта, если указанные репозитории
    лягут.

    Необходимо также подписать артефакты при помощи GnuPG, и соответствующий публичный ключ должен быть
    загружен на сервер ключей hkp://pool.sks-keyservers.net/. Про настройку GnuPG чуть ниже.

    Вот пример базового pom.xml с необходимой структурой:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.bitbucket.googolplex.devourer</groupId>
        <artifactId>devourer</artifactId>
        <version>0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>Devourer</name>
        <description>Feeds on XML and produces objects</description>
        <url>http://bitbucket.org/googolplex/devourer</url>
    
        <licenses>
            <license>
                <name>The Apache Software License, Version 2.0</name>
                <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
                <distribution>repo</distribution>
            </license>
        </licenses>
    
        <scm>
            <url>https://bitbucket.org/googolplex/devourer</url>
            <connection>scm:hg:https://bitbucket.org/googolplex/devourer</connection>
        </scm>
    
        <developers>
            <developer>
                <id>owner</id>
                <name>Vladimir Matveev</name>
                <email>dpx.infinity@gmail.com</email>
                <timezone>UTC+4</timezone>
            </developer>
        </developers>
    
        <dependencies>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>14.0-rc3</version>
            </dependency>
    
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.10</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </project>
    

    В принципе, такого pom.xml достаточно, чтобы загружать артефакты в репозиторий. Артефакты тогда
    надо будет подписывать вручную и вручную же загружать их в staging-репозиторий. Однако, мавен был
    придуман для того, чтобы автоматизировать рутинные операции, и деплой артефактов в репозиторий
    содержится в их числе.

    Чтобы мавен сам загружал артефакты в репозиторий и подписывал их, нужно добавить и сконфигурировать
    несколько плагинов. Однако, перед этим настроим GnuPG.

    Настройка GnuPG для подписи артефактов

    GnuPG (GNU Privacy Guard) — это альтернативная реализация известного пакета программ для
    криптографии PGP, полностью совместимая со стандартом OpenPGP. С помощью GnuPG можно создавать ключи
    для асимметричного и симметричного шифрования данных, а также проводить само шифрование многими
    алгоритмами. Также с помощью GnuPG можно подписывать данные. Именно этот функционал нам интересен.

    Установка GnuPG зависит от системы. В линуксе всё очень просто. Обычно GnuPG поставляется в
    стандартном репозитории и, вполне вероятно, уже установлен у вас. Если нет, то нужно попросить
    менеджер пакетов его установить. В Archlinux, например, это делается так:

    $ sudo pacman -S gnupg
    

    После установки в PATH появится программа gpg. Этого достаточно для мавена.

    Под Windows установка немного сложнее. GnuPG предоставляет бинарники, собранные для Windows, но там
    есть только относительно старые версии. На мой взгляд, лучшим вариантом будет воспользоваться
    gpg4win. Это сборка GnuPG под Windows с несколькими дополнительными программами, например,
    графическим менеджером ключей. Для мавена это, в общем-то, не нужно, но может быть полезно вам. Сайт
    gpg4win: 
    http://www.gpg4win.org/. Там можно найти установщик. При установке он должен автоматически
    добавить в системный PATH путь к каталогу, где лежит gpg.exe — то, что нам и нужно.

    После установки GnuPG открываем терминал и пишем в нём:

    $ gpg --gen-key
    

    GnuPG запросит у вас следующие параметры:

    1. Алгоритм ключа — по умолчанию у вас, скорее всего, будет RSA and RSA, это наилучший вариант.
    2. Размер ключа — по умолчанию должно быть 2048 бит, этого вполне достаточно.
    3. Срок действия ключа — по умолчанию ключ действует неограниченно долго; вы можете установить
      срок действия как дополнительную меру безопасности. После окончания срока действия ключ можно
      будет продлить, если вы не забыли пароль к ключу.
    4. Имя и E-Mail — ваши имя и электронная почта. Желательно всё же указать здесь реальные
      значения.
    5. Комментарий — необязательное поле (не знаю, зачем оно нужно), оставьте его пустым.
    6. Пароль — здесь нужно ввести пароль для защиты приватного ключа. В зависимости от системы
      пароль вам предложат ввести по-разному: может появиться графическое окно (gpg4win или GnuPG,
      запущенный из под графической оболочки линукса), или возникнет предложение ввести пароль в
      терминале. Этот пароль будет запрашиваться всегда, когда вам понадобится использовать приватный
      ключ, например, для подписи или обновления времени действия ключа.

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

    Затем GnuPG сообщит об успешной генерации ключей и выведет их отпечаток. Ещё раз проверить наличие
    ключа можно, введя команду gpg --list-keys:

    $ gpg --list-keys
    C:/Users/vpupkin/AppData/Roaming/gnupg/pubring.gpg
    ----------------------------------------------------
    pub   2048R/1A89FE67 2013-02-26
    uid                  Vasiliy Pupkin <vp@example.com>
    sub   2048R/D9725D51 2013-02-26
    

    Теперь вы можете подписывать файлы (да и вообще любые данные) с помощью GnuPG. Остался ещё один
    момент: нужно загрузить ваш публичный ключ на сервер ключей hkp://pool.sks-keyservers.net. Для
    этого нужно ввести следующую команду:

    $ gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 1A89FE67
    

    Аргументом к параметру --send-keys указан короткий отпечаток ключа, который можно взять из вывода
    команды gpg --list-keys. Через некоторое время GnuPG завершит работу, что будет означать, что ключ
    опубликован.

    Теперь, если вы не хотите подписывать артефакты и загружать их в репозиторий вручную, нужно
    настроить мавен, чтобы он делал это за вас.

    Настройка мавена для автоматической подписи и загрузки артефактов в snapshot- и staging-репозитории

    Большая часть конфигурации мавена делается из pom.xml настройкой соответствующих плагинов. Однако,
    часть конфигурации следует добавить в settings.xml, системном файле настроек мавена. Обычно этот
    файл лежит в $HOME/.m2/settings.xml (%HOME%\.m2\settings.xml в Windows) и предназначен для
    специфичных для пользователя настроек, вроде паролей или репозиториев.

    Сначала нужно сделать так, чтобы ваш pom.xml наследовался от артефакта, предоставленного Sonatype
    специально для упрощения выгрузки артефактов к ним на сервера. Для этого нужно добавить следующий
    кусок в ваш pom.xml:

    <parent>
        <groupId>org.sonatype.oss</groupId>
        <artifactId>oss-parent</artifactId>
        <version>7</version>
    </parent>
    

    Насколько я понимаю (сам я ещё не пробовал), если вы собираетесь загружать сложный многомодульный
    проект, который уже использует наследование POM, то нужно сделать oss-parent предком всех тех
    артефактов, которые предков не имеют, то есть, корней всех иерархий в проекте. Обычно такой корень
    один, но всё же.

    Вот список необходимых плагинов:

    • maven-source-plugin
    • maven-javadoc-plugin
    • maven-gpg-plugin

    Также нужен ещё maven-release-plugin, но он добавляется автоматически с нужной конфигурацией через
    наследование от oss-parent.

    Самое простое — настройка maven-source-plugin и maven-javadoc-plugin. Достаточно добавить
    следующие секции в pom.xml:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
    
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.9</version>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    

    Здесь мы указали, что на фазе жизненного цикла package нужно создать jar-файлы с исходниками и с
    документацией. Остальные плагины, maven-release-plugin и maven-gpg-plugin, автоматически
    подхватят эти сгенерированные артефакты, никакой дополнительной конфигурации не потребуется.

    Далее, настроим плагин для релиза артефактов, maven-release-plugin. Как я уже сказал, этот плагин
    автоматически конфигурируется в артефакте oss-parent, от которого должны наследоваться наши
    артефакты. Также в этом артефакте конфигурируются адреса репозиториев. maven-release-plugin будет
    использовать именно их для загрузки артефактов. Но, очевидно, просто так загрузить артефакты в
    репозиторий нельзя, нужно себя идентифицировать, то есть указать имя и пароль.

    Имя и пароль указываются в settings.xml. Окончательный вариант этого файла должен выглядеть
    примерно так:

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                            http://maven.apache.org/xsd/settings-1.0.0.xsd">
        <servers>
            <server>
                <id>sonatype-nexus-snapshots</id>
                <username>vpupkin</username>
                <password>password</password>
            </server>
    
            <server>
                <id>sonatype-nexus-staging</id>
                <username>vpupkin</username>
                <password>password</password>
            </server>
    
            <server>
                <id>bitbucket.org</id>
                <username>vpupkin</username>
                <password>password</password>
            </server>
        </servers>
    </settings>
    

    Идентификаторы репозиториев sonatype-nexus-snapshots и sonatype-nexus-staging определены в
    oss-parent, и мавен автоматически возьмёт имя и пароль из соответствующих секций settings.xml
    для загрузки артефактов в эти репозитории. Имя и пароль здесь должны быть указаны те, что были
    использованы при регистрации на Sonatype JIRA.

    Также я ещё указал здесь сервер с идентификатором bitbucket.org. Это нужно для плагина
    maven-scm-plugin, который используется плагином maven-release-plugin для создания в системе
    контроля версий тегов, соответствующих релизу. Для того, чтобы это работало, нужно указать
    дополнительный адрес в блоке в pom.xml:

    <scm>
        <url>https://bitbucket.org/googolplex/devourer</url>
        <connection>scm:hg:https://bitbucket.org/googolplex/devourer</connection>
        <developerConnection>scm:hg:https://bitbucket.org/googolplex/devourer</developerConnection>
    </scm>
    

    Новый адрес указан в элементе developerConnection. Здесь он совпадает с адресом в connection,
    но, вообще говоря, они могут быть разными: connection означает адрес на read-only доступ к коду, а
    developerConnection — на read-write. Как раз для него мы и добавляли логин и пароль к
    bitbucket.org в settings.xml. maven-scm-plugin сам распознает, что этот логин и пароль
    относятся к серверу, который указан в .

    Для работы maven-scm-plugin бинарник вашей системы контроля версий должен находиться в
    PATH. Например, в моём примере это должен быть hg или hg.exe. Поэтому перед использованием
    maven-release-plugin вам потребуется настроить вашу VCS и операционную систему соответствующим
    образом. На этом останавливаться не будет: под линуксом всё очень просто, а под Windows установщики
    обычно достаточно умные, чтобы добавить пути в PATH.

    Теперь нужно настроить maven-gpg-plugin. Вообще говоря, подписывать нужно только релизные версии
    артефактов, то есть те, которые попадут в Maven Central. Поэтому имеет смысл настроить вызов этого
    плагина только тогда, когда запускается команда для создания релизного артефакта. Мавен, точнее,
    maven-release-plugin, предоставляет такую возможность.

    Воспользуемся такой фичей мавена, как профили. Профили позволяют динамически включать и отключать
    различные части конфигурации мавена по необходимости, в том числе и плагины. Профили можно объявлять
    как в pom.xml, так и в settings.xml. Объявим профиль для вызова maven-gpg-plugin прямо в
    pom.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        ...
        <profiles>
            <profile>
                <id>sign-artifacts</id>
                <activation>
                    <property>
                        <name>performRelease</name>
                        <value>true</value>
                    </property>
                </activation>
                <build>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-gpg-plugin</artifactId>
                            <version>1.4</version>
                            <configuration>
                                <passphrase>${gpg.passphrase}</passphrase>
                            </configuration>
                            <executions>
                                <execution>
                                    <id>sign-artifacts</id>
                                    <phase>verify</phase>
                                    <goals>
                                        <goal>sign</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </build>
            </profile>
        </profiles>
    </project>
    

    Здесь объявляется новый профиль, sign-artifacts, и указывается, что его следует активировать
    тогда, когда системное свойство performRelease будет равно true. Это свойство устанавливает
    maven-release-plugin, когда запущена его команда на создание релиза. В профиле конфигурируется
    maven-gpg-plugin: его следует запускать по достижении фазы жизненного цикла verify. Также
    плагину передаётся наш пароль для GPG-ключа.

    Пароль этот передаётся через свойство gpg.passphrase. Понятно, что сохранять пароль на приватный
    ключ в самом pom.xml несколько неразумно. Вместо этого сконфигурируем его в settings.xml. Для
    этого создадим ещё один профиль, но уже внутри settings.xml. Выглядеть это будет так:

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                            http://maven.apache.org/xsd/settings-1.0.0.xsd">
        ...
        <profiles>
            <profile>
                <id>gpg-passphrase</id>
                <activation>
                    <activeByDefault>true</activeByDefault>
                </activation>
                <properties>
                    <gpg.passphrase>passphrase</gpg.passphrase>
                </properties>
            </profile>
        </profiles>
    </settings>
    

    Здесь мы указываем, что в профиле нужно определить свойство gpg.passphrase со значением, равным
    паролю к ключу. Это значение будет подставлено в соответствующее место в конфигурации
    maven-gpg-plugin'а. В условиях активации стоит

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

    Выгружаем артефакты в репозиторий

    
    В общем, это всё, что нужно сделать, чтобы мавен умел загружать артефакты в репозиторий. Если теперь
    вы выполните такую команду в корне проекта:
    
    $ mvn deploy
    

    то через некоторое время в snapshot-репозиторий будет загружена текущая версия ваших артефактов.

    К snapshots-репозиторию можно получить доступ извне, например, чтобы пользоваться snapshot-версиями
    артефакта. Возможно это сделать, например, по этому адресу:
    https://oss.sonatype.org/content/groups/staging. Однако, репозиторий по этой ссылке важен по другой
    причине. В него попадают не только снэпшоты и релизы, но и т.н. 
    staged-версии
    артефактов. Фактически, это релизные версии, которые ещё не синхронизированы Maven
    Central. Stage-пространство нужно для последней проверки, что с вашими артефактами всё в порядке. То
    есть, перед релизом артефакта в Central стоит проверить, что, например, проект, использующий ваш
    артефакт, компилируется нормально, если он будет зависеть от новой релизной версии. Если возникнут
    какие-то проблемы, staged-артефакт можно удалить и создать заново. Как только все проблемы
    разрешены, staged-артефакт можно "продвинуть" в Maven Central. С этого момента его изменить уже
    будет нельзя.

    Рассмотрим поподробнее, как выглядит загрузка артефакта в staging-репозиторий, и что нужно делать
    для "продвижения" артефакта в Central.

    Поскольку проект уже настроен для релиза артефактов, достаточно выполнить две команды:

    $ mvn release:prepare
    ...
    $ mvn release:perform
    ...
    

    Первая команда подготавливает релиз. Если конкретнее, то она делает следующее:

    • проверяет, что в дереве исходников нет незакоммиченных изменений;
    • проверяет, что у всех артефактов нет зависимостей на snapshot-версии других артефактов;
    • меняет версию у всех артефактов с x-SNAPSHOT на ту, что вы укажете;
    • изменяет информацию о системе контроля версий в pom.xml, чтобы она соответствовала новому пути
      в репозитории для нового релиза (актуально для тех VCS, в которых нет отдельного понятия тегов,
      таких, как SVN);
    • запускает автоматические тесты с изменёнными pom.xml, чтобы проверить, что ничего не сломалось;
    • коммитит изменённые pom.xml;
    • создаёт тег в репозитории для новой версии, запрашивая у вас имя тега;
    • обновляет версию в pom.xml на y-SNAPSHOT (это тоже плагин у вас спросит);
    • коммитит изменённые pom.xml.

    Таким образом, после выполнения mvn release:prepare в репозитории образуется два коммита (первый с
    обновлением текущей snapshot-версии на релизную, а второй — с релизной на новую snapshot'ную) и
    один тег (который будет указывать на тот коммит, в котором присутствует релизная версия).

    Другими словами, mvn release:prepare создаёт "точку релиза" в репозитории, фиксируя то состояние
    проекта, которое попадёт в Central.

    Теперь нужно загрузить артефакт в репозиторий. Для этого служит вторая команда, mvn release:perform. Эта команда выкачивает тег релизной версии из репозитория и собирает его командой
    вроде mvn site-deploy. Команда mvn site-deploy в условиях такой конфигурации проекта, которую мы
    сделали, загрузит артефакт в staging-репозиторий.

    Очевидно, mvn release:perform должна откуда-то брать название тега, который нужно загрузить. Она
    может брать тег либо из файла release.properties, который создаётся командой mvn release:prepare, либо из командной строки. После успешной выгрузки артефакта и сопутствующих файлов
    в репозиторий, release:perform удалит лишние файлы, созданные release:prepare.

    Внимание: при использовании таких VCS, у которых понятие тега не связано с файловой системой
    (например, это Mercurial и Git), через командную строку указать название тега, к сожалению,
    нельзя. Я вообще не нашёл способа указать тег для mvn release:perform, если перед этим не был
    выполнен mvn release:prepare. Если кто-то подскажет, как это сделать, буду очень благодарен.

    Таким образом, после выполнения этих команд ваши артефакты будут загружены в staging-репозиторий. Их
    можно увидеть через веб-интерфейс системы управления репозиториями Sonatype Nexus на
    https://oss.sonatype.org/. В правом верхнем углу по ссылке Log In нужно войти в систему с тем
    логином и паролем, который вы выбрали при регистрации на JIRA. После этого слева в списке появится
    группа 
    Build Promotion, а в ней три ссылки. Нужная нам называется Staging Repositories. По
    нажатию на неё в центральном окне откроется список staging-репозиториев, то есть, временных хранилищ
    для артефактов в состоянии staging. В официальной документации приводятся скриншоты окна, в котором
    виден всего лишь один репозиторий, тот, в который мы только что выгрузили артефакт. Однако, по
    какой-то причине у меня это выглядит так:

    Как мне ответили в тикете на JIRA, наличие этих артефактов не страшно, они не мешаются, и у обычных
    пользователей всё равно нет прав на их изменение.

    Мой репозиторий наверху. Видно, что он в статусе Closed, но у вас он будет сначала в статусе
    Open. Вообще staging-репозиторий может быть в двух состояниях — Open и Closed. В статусе
    Open репозиторий находится сразу после выгрузки артефактов. В состояние Closed репозиторий нужно
    перевести вручную, с помощью кнопки 
    Close на панели инструментов сверху. При этом Nexus проверит,
    что все артефакты в репозитории находится в состоянии, подходящем для Maven Central: присутствуют
    корректные цифровые подписи, pom.xml имеет правильный формат и т.д. Если будут какие-то проблемы,
    то Nexus сообщит об ошибках, и после исправления проблема артефакты надо будет выгрузить снова. Как
    только репозиторий оказывается в статусе 
    Closed, он более недоступен для изменения; именно в таком
    виде он попадёт в Maven Central. После закрытия репозитория артефакты становятся доступным в
    staging-репозитории: 
    https://oss.sonatype.org/content/groups/staging. Можно воспользоваться им,
    чтобы проверить работу артефакта перед тем, как "продвигать" его в Maven Central.

    Если вы удовлетворены проверками и считаете, что уже пора бы вашему артефакту попасть в Central, то
    нужно выбрать ваш staging-репозиторий и нажать кнопку 
    Release на панели инструментов. Через
    некоторое время staging-репозиторий пропадёт из списка. Теперь артефакт попадёт в основной
    репозиторий Sonatype OSSRH: 
    https://oss.sonatype.org/content/groups/public. Но раз мы хотим, чтобы
    наш артефакт был доступен в Maven Central, то нужно сделать ещё один шаг.

    Поскольку вы загружаете свой репозиторий в Maven Central в первый раз, вам нужно будет оставить
    комментарий на вашем тикете в Sonatype JIRA о том, что вы "продвинули" свой артефакт, и что нужно
    включить синхронизацию с Maven Central:

    Сотрудник Sonatype вам ответит через некоторое время (здесь мне опять повезло: мне ответили почти
    сразу после того, как я оставил комментарий; похоже, что самое подходящее время для общения на JIRA
    — около 12 ночи по Москве), что синхронизация включена. В течение нескольких часов ваш артефакт
    будет доступен в Maven Central. Поздравляю! :)

    Процедуру с комментарием надо провести только один раз. После этого синхронизация будет включена уже
    навсегда, и все артефакты, которые вы загружаете в staging-репозиторий после "продвижения" будут
    синхронизированы с Maven Central автоматически.

    Замечания по поводу хранения паролей в settings.xml

    Возможно, некоторые читатели возмутились, что я использовал в статье хранение паролей в открытом
    виде в settings.xml. В этом я с ними соглашусь: хранение паролей плейнтекстом — действительно
    неудачная идея. К счастью, создатели мавена об этом также осведомлены. В мавене есть возможность
    хранить пароли и в 
    зашифрованном виде.

    Использование зашифрованных паролей описано в руководстве по мавену:
    http://maven.apache.org/guides/mini/guide-encryption.html. Если вкратце, то зашифрованные пароли
    используются следующим образом.

    1. Создаётся мастер-пароль:
      $ mvn --encrypt-master-password your-password
      

      Пароль нужно указывать в командной строке. О безопасности этого ниже.
      Значение, выведенное этой командой, будет выглядеть примерно так:

      {FshtxgrHbMoH+X+v4cwYL9t9QgtwTgoLmfiV6LkPkvg=}
      

      Это значение необходимо сохранить в файле $HOME/.m2/settings-security.xml, вот таким образом:

      <settingsSecurity>
          <master>{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}</master>
      </settingsSecurity>
      
    2. Теперь можно шифровать серверные пароли. Делается это с помощью команды:
      $ mvn --encrypt-password your-password
      

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

      {tly+tTyx46MHPhht/SryJw8+x4n4oWfzgAPZ/B+KFoc=}
      

      Этот пароль можно использовать внутри секции в settings.xml:

      <settings>
      ...
          <servers>
      ...
              <server>
                  <id>my.server</id>
                  <username>foo</username>
                  <password>{tly+tTyx46MHPhht/SryJw8+x4n4oWfzgAPZ/B+KFoc=}</password>
              </server>
      ...
          </servers>
      ...
      </settings>
      

      Это будет работать для всех плагинов, использующих : maven-deploy-plugin,
      maven-scm-plugin и т.д. Однако, здесь не обошлось без ложки дёгтя: см. далее.

      Также иногда может быть так, что мавен откажется шифровать пароль с какой-то ошибкой насчёт блока
      шифра. Это не страшно, достаточно перегенерировать мастер-пароль.

      Таким образом, для использования паролей в settings.xml будет обязательно нужен
      мастер-пароль. Наличия файла settings-security.xml с зашифрованным мастер-паролем внутри
      достаточно, чтобы можно было пользоваться зашифрованными паролями в settings.xml. Чтобы сохранить
      мастер-пароль в безопасности, файл settings-security.xml с мастер-паролем можно поместить на
      съёмный носитель, например, на флешку, а в файле $HOME/.m2/settings-security.xml указать, что
      нужно использовать файл, находящийся в другом месте:

      <settingsSecurity>
          <relocation>/media/secure-flash/settings-security.xml</relocation>
      </settingsSecurity>
      

      Таким образом, пароли в файле settings.xml могут быть надёжно защищены.

      К сожалению, здесь не обошлось без проблем. Во-первых, по какой-то причине maven-scm-plugin у меня
      не захотел работать с зашифрованными паролями при использовании Mercurial. Из логов мавена было
      видно, что он отправляет пароль as-is, не расшифровывая его, и, естественно, получает ошибку. Я не
      знаю с чем это связано, и гугление ничего существенного не дало. Я решил эту проблему использованием
      SSH-транспорта для Mercurial. Конкретнее, секция у меня в pom.xml стала выглядеть так:

      <scm>
          <url>https://bitbucket.org/googolplex/devourer</url>
          <connection>scm:hg:https://bitbucket.org/googolplex/devourer</connection>
          <developerConnection>scm:hg:ssh://hg@bitbucket.org/googolplex/devourer</developerConnection>
      </scm>
      

      Обратите внимание на . SSH-клиент у меня на машине настроен на использование
      ключей для аутентикации, так что такой метод работает вполне удовлетворительно. Вполне возможно, что
      с другими VCS проблем не будет.

      Ещё одна проблема — это ограниченность применимости зашифрованных паролей. Их можно использовать
      только в , в любом другом месте дешифрация проводиться не будет. Вспомним наш
      дополнительный профиль в settings.xml, который содержит пароль на приватный ключ:

      <profiles>
          <profile>
              <id>gpg-passphrase</id>
              <activation>
                  <activeByDefault>true</activeByDefault>
              </activation>
              <properties>
                  <gpg.passphrase>passphrase</gpg.passphrase>
              </properties>
          </profile>
      </profiles>
      

      Здесь бесполезно заменять пароль зашифрованной версией, так как maven-gpg-plugin не использует
      мавеновское шифрование и, судя по открытому два с половиной года назад 
      тикету, вообще не может его
      использовать (ну по крайней мере это сопряжено с существенными трудностями).

      Возможная альтернатива — отключение пароля на ключ (это возможно сделать с помощью GnuPG) и
      перемещение "связки ключей" GnuPG на внешний зашифрованный носитель. Для этого нужно немного
      исправить settings.xml и pom.xml.

      Профиль в settings.xml:

      <profiles>
          <profile>
              <id>gpg-passphrase</id>
              <activation>
                  <activeByDefault>true</activeByDefault>
              </activation>
              <properties>
                  <gpg.passphrase/>
                  <gpg.home>/media/secure-flash/gnupg</gpg.home>
              </properties>
          </profile>
      </profiles>
      

      Настройки maven-gpg-plugin в pom.xml:

      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>1.4</version>
          <configuration>
              <passphrase>${gpg.passphrase}</passphrase>
              <homedir>${gpg.home}</homedir>
          </configuration>
          <executions>
              <execution>
                  <id>sign-artifacts</id>
                  <phase>verify</phase>
                  <goals>
                      <goal>sign</goal>
                  </goals>
              </execution>
          </executions>
      </plugin>
      

      Здесь мы использовали новое свойство, gpg.home, которое указывает на каталог с ключами GnuPG на
      внешнем устройстве, а также убрали пароль на ключ.

      Ещё один вариант — просто вводить пароль каждый раз, когда мавен его попросит при сборке. Для
      этого нужно убрать опцию в свойствах maven-gpg-plugin в pom.xml. В такой
      конфигурации, какая приведена в этой статье, вводить пароль придётся два раза: во время mvn release:prepare и во время mvn release:perform.

      Если вы пользуетесь Unix-системами, то, наверное, знаете, что SSH-ключи в каталоге пользователя
      защищаются с помощью прав на файлы: у ключей обычно стоят права доступа вроде 600, то есть только
      для пользователя-владельца файла. В принципе с файлами конфигурации мавена можно поступить так же
      — выставить правильные привилегии на файл settings.xml. Это даст бонус к защите ваших паролей.

      Ну и последняя возможность — передавать пароль в командной строке: mvn release:prepare -Dgpg.passphrase=passphrase, но это уже будет совсем большая дыра, так, конечно, лучше не делать.

      Насчёт ввода паролей открытым текстом при вызове mvn --encrypt{,-master}-password: с этим ничего
      не поделаешь, их 
      придётся вводить как аргумент к команде. После этого стоит почистить файл с
      историей вашего шелла, например, ~/.zsh_history. Также после редактирования файлов желательно
      посмотреть, что ваш редактор не сохранил пароли в кэше, например, ~/.viminfo или в ~-файлах у
      емакса.

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

      Заключение

      Такие репозитории, как Maven Central — это огромное преимущество Java как платформы, и чем больше
      в них будет готовых к использованию артефактов, тем лучше будет для всей экосистемы Java. К счастью,
      весь процесс публикации библиотеки оказался не таким сложным, как выглядит. Надеюсь, моя статья
      помогла внести ещё большую ясность в него. Спасибо за прочтение.

      Буду рад указаниям на все ошибки, опечатки и фактические неточности.

      Статья подготовлена в Emacs Org Mode, сконвертирована в формат Хабра с помощью Org -> Docbook -> Habr Exporter.


      Использованные ресурсы

      1. Официальный гайд Sonatype по использованию OSSRH:
        https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide
      2. Гайд Sonatype по использованию GnuPG совместно с мавеном:
        https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven
      3. Документация по мавену и его плагинам: http://maven.apache.org/guides/index.html,
        http://maven.apache.org/plugins/index.html
      4. Конечно же, гугл.

    Original : https://habr.com/ru/post/171493/