Что это и зачем оно надо: Как известно, главное преимущество Java мира в том в нем существует огромное количество open-source проектов на на все случаи жизни, однако найти нужный на github’e не так просто, так как описание проекта часто мало информативно, зачастую сложно даже понять этот проект для Android’a или нет. В этой статье я автоматически и полуавтоматически собрал Java проекты, убрал старые и проекты только для Android’a, выбрал 350 набравших больше всего звезд, разделил по категориям и перевел описания.
Если вы хотите убедиться что баз данных пишут не только на C, найти проекты для работы с большими данными или нейронными сетями, просто узнать какие новые возможности можно найти в Java мире open-source это статья вам, думаю, может пригодится.
Проекты, разделенные по категориям
1. Фреймворки и библиотеки
1. Фреймворки- 17 проектов
1. Фреймворки
- ReactiveX RxJava библиотека для реализации асинхронного и событийного программирования на основе расширения паттерна Observer для разных языков от ReactiveX.. Лицензия: Apache 2, рейтинг — 6279 English
2. Полезные библиотеки- 10 проектов
2. Полезные библиотеки
- zxing открытая разноформатная библиотека для обработки 1D/2D barcode изображений с реализацией на Java и портированием на другие языки. . Лицензия: Apache 2, рейтинг — 5314 English
3. Добавление новых возможностей в язык Java и JVM- 11 проектов
3. Добавление новых возможностей в язык Java и JVM
- Guice Guice (произносится ‘juice’) это легковесный dependency injection фреймворк для Java 6 и выше, созданный Google… Лицензия: Apache 2, рейтинг — 1881 English
4. Вебфреймворки- 17 проектов
4. Вебфреймворки
- Atmosphere — фреймворк для разработки клиентской и серверной части асинхронных веб.приложений, поддерживающий разные серверны, браузеры и плагины. Лицензия: CDDL1 / Apache 2, рейтинг — 2235 English
5. Игровые фреймворки- 6 проектов
5. Игровые фреймворки
- libgdx Кросплатформенный фреймворк для разработки игр на основе OpenGL (ES), работает под Windows, Linux, Mac OS X, Android, iOS и в браузерах с WebGL. . Лицензия: Apache 2, рейтинг — 6579 English
6. Java библиотеки и фреймворки для авторизации пользователей и обеспечения безопасности- 5 проектов
6. Java библиотеки и фреймворки для авторизации пользователей и обеспечения безопасности
- Scribe Java — простая OAuth библиотека для Java. Лицензия: MIT, рейтинг — 2731 English
7. Фреймворки и библиотеки для создания бизнес приложений на Java- 7 проектов
7. Фреймворки и библиотеки для создания бизнес приложений на Java
- Codecademy EventHub — позволяет анализировать бизнес события, чтобы получать KPI, conversion rate и т. п. Бизнес метрики событий. Лицензия: MIT, рейтинг — 1043 English
8. Сериализация (serializer) и работа с файлами (I/O)- 4 проектов
8. Сериализация (serializer) и работа с файлами (I/O)
- Square Okio Современный I/O API для Java. Лицензия: Apache 2, рейтинг — 1243 English
9. Работа с изображением и видео — 5 проектов
9. Работа с изображением и видео
- Facebook Rebound Это Java библиотека которая моделирует поведение физики реального мира в вашем приложении. Лицензия: BSD, рейтинг — 2219 English
10. Логирование (logging)- 2 проектов
10. Логирование (logging)
- Graylog2 server свободная и открытая система логирования. Лицензия: GNU 3, рейтинг — 1308 English
2. Базы данных и поисковые системы
1. Базы данных и хранилища- 25 проектов
Пример простой программы на Java
Java не для Вас, если …
1. Базы данных и хранилища
- Thinkaurelius Titan — распределенная графическая база данных. Лицензия: Apache 2, рейтинг — 2846 English
2. Поисковые системы- 6 проектов
2. Поисковые системы
- Elasticsearch — одна из самых популярных систем распределенного облачного поиска.. Лицензия: Apache 2, рейтинг — 11833 English
3. Клиенты и драйверы баз данных — 21 проектов
3. Клиенты и драйверы баз данных
- Facebook Presto Библиотека для работы с распределенными SQL запросами к big data источникам (Cassandra, Hive, Kafka, MySQL, PostgreSQL и т.п.). . Лицензия: Apache 2, рейтинг — 3603 English
4. Маппинг объектов в базы данных (ORM и т. п.)- 8 проектов
4. Маппинг объектов в базы данных (ORM и т. п.)
- HikariCP HikariCP — быстрая, надежная и легкая библиотека для создания JDBC connection pool с минимальными накладными расходами. Лицензия: Apache 2, рейтинг — 1542 English
3. Работа с данными
1. Системы, для обработки данных (работа с грязными данными, анализ и т.п.)- 9 проектов
1. Системы, для обработки данных (работа с грязными данными, анализ и т.п.)
- Storm — распределенная и устойчивая к ошибкам обработка данных в реальном времени: потоковая обработка, непрерывные вычисления, распределенный RPC и другое. Лицензия: Apache 2, рейтинг — 8636 English
2. Большие данные (big data)- 19 проектов
2. Большие данные (big data)
- Apache Storm — зеркало для Apache Storm — свободную и распределенную систему обработки данных в реальном времени, аналог Hadoop, но для быстрой потоковой обработки данных, может использоваться с любым языком программирования… Лицензия: Apache 2, рейтинг — 2098 English
4. Машинное обучение, нейроные сети, естественный языки
1. Машинное обучение и нейроные сети- 8 проектов
1. Машинное обучение и нейроные сети
- Airbnb Aerosolve Библиотека для машинного обучения, дружелюбная к пользователям (простая в настройке и т. п.). Лицензия: Apache 2, рейтинг — 1672 English
2. Работа с естественными языками (NLP)- 1 проектов
2. Работа с естественными языками (NLP)
- Stanfordnlp CoreNLP Stanford CoreNLP: Java библиотека для работы с Stanford NLP (инструментами для анализа и работы с текстом на естественных языках, например английским). Лицензия: GNU 2, рейтинг — 871 English
5. Интеграция
1. Интеграция- 2 проектов
1. Интеграция
- Jmxtrans Интеграция JVM с „внешним мира“ (программами логирования, мониторинга, графики и т. п.). Лицензия: ?, рейтинг — 708 English
2. Парсеры (Parser)- 6 проектов
2. Парсеры (Parser)
- Sparklemotion Nokogiri Nokogiri это HTML, XML, SAX, и Reader парсер с подержкой XPath и CSS selector… Лицензия: Apache 2, рейтинг — 3323 English
3. Работа с Json- 9 проектов
3. Работа с Json
- Alibaba Fastjson Быстрый JSON обработчик. Лицензия: Apache 2, рейтинг — 2605 English
4. Интеграция с Api разных систем (соц. сетей и т. п.)- 8 проектов
4. Интеграция с Api разных систем (соц. сетей и т. п.)
- Twitter Zipkin Zipkin это распределенная системы отслеживания, которая используется Twitter для сборк информации о работе всех его различных сервисов. Лицензия: Apache 2, рейтинг — 2442 English
5. Работа с биткойном — 3 проектов
5. Работа с биткойном
- XChange XChange это Java библиотека предоставляющая удобный API для взаимодействия с более чем 50+ Bitcoin и Altcoin обменными биржами. Лицензия: MIT, рейтинг — 455 English
6. Работа с сетью
1. Веб сервера и сервера приложений (web server application server)
- Wildfly — сервер приложений (Application Server). Лицензия: GNU Lesser 2.1, рейтинг — 1386 English
2. Сеть и сокеты- 6 проектов
2. Сеть и сокеты
- Netty низкоуровневый асинхроно-событийный фреймворк для быстрого создания высокопроизводительных клиент-серверных соединений. Более удобный аналог ассинхронным сокетам из модуля java.nio из JDK. . Лицензия: Apache 2, рейтинг — 4847 English
3. Работа с сообщениями (message), очереди сообщений и прием и отправка сообщений- 7 проектов
3. Работа с сообщениями (message), очереди сообщений и прием и отправка сообщений
- LMAX Exchange Disruptor Высокопроизводительная библиотека для поддержки межпоточных сообщений. Лицензия: Apache 2, рейтинг — 3137 English
4. Работа с http и ssh- 11 проектов
4. Работа с http и ssh
- Square Okhttp HTTP github- 2 проектов
3. Работа с git https://sohabr.net/habr/post/261165/» target=»_blank»]sohabr.net[/mask_link]
Алгоритмы сортировки на Java с примерами
В одной из предыдущих статей мы разобрались, где применяются алгоритмы сортировки, а теперь поговорим об их реализации на Java. Помните, что разные алгоритмы оптимальны для разных наборов и типов данных. В нашей статье мы рассмотрим наиболее «ходовые».
- Сортировка пузырьком
- Быстрая сортировка
- Сортировка слиянием
- Сортировка вставками
- Сортировка выбором
- Пирамидальная сортировка
- Встроенные функции сортировки Java
Алгоритм сортировки пузырьком на Java
Сортировка пузырьком (Bubble Sort) — это один из наиболее известных алгоритмов, суть которого состоит в последовательном сравнении двух соседних элементов. В том случае, если предыдущий элемент больше последующего, они меняются местами.
Так выглядит сортировка пузырьком на Java:
public static void bubbleSort(int[] sortArr) < for (int i = 0; i < sortArr.length — 1; i++) < for(int j = 0; j < sortArr.length — i — 1; j++) < if(sortArr[j + 1] < sortArr[j]) < int swap = sortArr[j]; sortArr[j] = sortArr[j + 1]; sortArr[j + 1] = swap; >> > > public static void main(String args[]) < int[] sortArr = ; bubbleSort(sortArr); for(int i = 0; i < sortArr.length; i++)< System.out.print(sortArr[i] + «n»); >>
Объяснение
Как видим из кода, метод bubbleSort() принимает массив в качестве входных данных для сортировки — sortArr . Далее мы создаём внешний цикл for , который перебирает каждый элемент массива, тогда как внутренний цикл for начинается с первого элемента массива до предпоследнего индекса: sortArr.length — i — 1 . С помощью условия if мы проверяем, больше ли элемент слева элемента справа или нет. Если элемент слева действительно больше, он меняется местами с правым элементом.
Примечание Внешний цикл for будет перебирать все элементы массива, даже если массив уже полностью отсортирован.
Массив, который принимает метод bubbleSort() , может быть любым. В нашем примере мы передаём значения 12, 6, 4, 1, 15, 10 .
Сложность алгоритма: О(n2)
А ниже представлен алгоритм сортировки двумерного массива Java пузырьком:
public static int[][] matrixBubbleSort(int[][] sortMatrix) < int swap; for (int i = 0; i < sortMatrix.length; i++) < for (int j = 0; j < sortMatrix[i].length; j++) < for (int k = 0; k < sortMatrix.length; k++) < for (int l = 0; l < sortMatrix[k].length; l++) < if (sortMatrix[i][j] > > > > return sortMatrix; > public static void main(String args[]) < int[][] sortMatrix = new int[][]< , , >; matrixBubbleSort(sortMatrix); //Вывод отсортированного двумерного массива: for (int i = 0; i < sortMatrix.length; i++) < for (int j = 0; j < sortMatrix[i].length; j++) < System.out.print(sortMatrix[i][j] + » «); >System.out.println(); > >
Алгоритм быстрой сортировки на Java
Быстрая сортировка, также известная как Quick Sort или сортировка Хоара, является одним их самых эффективных алгоритмов. Она включает в себя три этапа:
- Из массива выбирается опорный элемент, чаще всего посередине массива.
- Другие элементы массива распределяются таким образом, чтобы меньшие размещались до него, а большие — после.
- Далее первые шаги рекурсивно применяются к подмассивам, которые разделились опорным элементом на две части — слева и справа от него.
Пример быстрой сортировки на языке Java:
public static void quickSort(int[] sortArr, int low, int high) < //завершить,если массив пуст или уже нечего делить if (sortArr.length == 0 || low >= high) return; //выбираем опорный элемент int middle = low + (high — low) / 2; int border = sortArr[middle]; //разделияем на подмассивы и меняем местами int i = low, j = high; while (i border) j—; if (i > //рекурсия для сортировки левой и правой части if (low < j) quickSort(sortArr, low, j); if (high >i) quickSort(sortArr, i, high); > public static void main(String args[]) < int[] sortArr = ; quickSort(sortArr, 0, sortArr.length — 1); for(int i = 0; i < sortArr.length; i++)< System.out.print(sortArr[i] + «n»); >>
Сложность алгоритма: O(n log n)
Алгоритм сортировки слиянием на Java
Java примеры программ готовые
Всем доброго времени суток. На связи Алексей Гулынин. В данной статье я бы хотел написать клиентскую часть простого чата на Java. Все комментарии также будут даны в коде.
Скачать уже готовый проект полностью Подробнее
Чат на Java (Серверная часть)
Опубликовано Март 9, 2017 от Алексей Гулынин 4 комментарии
Всем доброго времени суток. На связи Алексей Гулынин. В данной статье я бы хотел написать серверную часть простого чата на Java. Все комментарии будут даны в коде.
Скачать уже готовый проект полностью Подробнее
Крестики-нолики Java Swing (часть 2)
Опубликовано Февраль 22, 2017 от Алексей Гулынин Оставить комментарий
Всем доброго времени суток. На связи Алексей Гулынин. В данной статье продолжаем работать над созданием игры Крестики-нолики на Java с использованием Swing . В данной статье напишем 2 класса GameSettingsForm и MainGameField . Класс GameSettingsForm является формой, в которой мы будем Подробнее
Крестики-нолики Java Swing (часть 1)
Опубликовано Февраль 20, 2017 от Алексей Гулынин Оставить комментарий
Всем доброго времени суток. На связи Алексей Гулынин. В прошлых статьях, посвященных Java, мы написали игру в процедурном стиле. В данной статье я бы хотел начать писать игру «Крестики-нолики» в объектном стиле с графическим интерфейсом, используя библиотеку Swing . Данная задача поможет разобраться в объектно-ориентированном программировании Подробнее
Работа с SQLite в Java
Опубликовано Февраль 13, 2017 от Алексей Гулынин Оставить комментарий
Всем доброго времени суток. На связи Алексей Гулынин. В данной статье я бы хотел рассказать, как работать с SQLite в Java. При работе с базами данных на Java будем использовать технологию JDBC (Java DataBase Connectivity)) . JDBC — это API для работы с базами данных на Java. Компания Oracle разработала универсальный интерфейс для работы с драйверами JDBC. Подробнее
Крестики-нолики в процедурном стиле Java (Часть 2)
Опубликовано Февраль 8, 2017 от Алексей Гулынин Оставить комментарий
Всем доброго времени. На связи Алексей Гулынин. В данной статье закончим разработку консольного варианта игры крестики-нолики в процедурном стиле на Java.
Метод «userShot» отвечает за ход игрока, где первым параметром указывается метка «X» или «O» (то, чем он ходит), а вторым номером указывается Подробнее
Крестики-нолики в процедурном стиле Java (Часть 1)
Опубликовано Февраль 6, 2017 от Алексей Гулынин Оставить комментарий
Всем доброго времени. На связи Алексей Гулынин. На досуге решил немного изучить Java. В результате решил написать игру «Крестики-нолики» в процедурном стиле, чтобы изучить базовые возможности языки, такие как типы переменных, циклы, операторы, методы, условный оператор, работа с буфером Подробнее
Источник: alekseygulynin.ru