Telegram Web Link
🖥 Apache Zeppelin — веб-блокнот, позволяющий работать с данными на SQL, Scala и ещё 20+ языках

Apache Zeppelin — веб-блокнот на Java, позволяющий проводить интерактивную аналитику данных и создавать совместные документы с использованием SQL, Scala и других языков.

Быстрый старт с помощью Docker:
docker run -p 8080:8080 --rm --name zeppelin apache/zeppelin:0.11.1

🖥 GitHub
🟡 Страничка Apache Zeppelin

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
15👍9🥰2
🖥 LWJGL — это open-source Java-библиотека, обеспечивающая кроссплатформенный доступ к популярным нативным API, полезным при разработке графических (OpenGL, Vulkan, bgfx), аудио (OpenAL, Opus), параллельных (OpenCL, CUDA) и XR (OpenVR, LibOVR, OpenXR) приложений

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

🖥 GitHub
🟡 Быстрый старт

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍165😱4🔥1
🖥 OpenSearch — распределенный RESTful поисковой движок на Java с открытым исходным кодом

OpenSearch — это комьюнити-форк Elasticsearch и Kibana с открытым исходным кодом.
Движок активно поддерживается и развивается.

🖥 GitHub
🟡 Доки

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123🔥2🥰1
🖥 Portfolio Performance — open-source инструмент на Java для расчета общей эффективности инвестиционного портфеля

Позволяет записывать всю историю операций: покупки, продажи, оплата налогов, сборы, и т.д.

Обновляет исторические котировки по данным из различных источников: Yahoo Finance, Finnhub.io, Quandl или AlphaVantage.
При желании можно настроить получение котировок с нужных HTML-страниц или из JSON-документов.

Все данные хранятся в XML для дальнейшей обработки и могут быть экспортированы в CSV или JSON.

🖥 GitHub
🟡 Страничка Portfolio Performance

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍173🔥1
🖥 45 интересных фактов о Java

С момента своего создания в начале 90-х годов и до сегодняшнего дня, Java остается одним из самых популярных и востребованных языков программирования в мире.
Давайте предадимся ностальгии, поговорим о 45 известных и не очень фактов о Java
Уверен, будет интересно даже Java-гуру, поехали!

〰️ Основы и история
🟡Java была создана в 1995 году компанией Sun Microsystems.

🟡Изначально язык назывался «Oak», в честь дуба, росшего около офиса его создателей.

🟡Цель создания Java — возможность запуска программ на любом устройстве без изменений кода.

🟡Девиз Java: «Write Once, Run Anywhere» (WORA) — напиши один раз, запусти везде.

🟡Создатель Java — Джеймс Гослинг.

🟡В 2010 году Oracle Corporation приобрела Sun Microsystems, став владельцем Java.

🟡Java — объектно-ориентированный язык программирования.


〰️ Версии и обновления
🟡Java имеет 2 основные редакции: Standard Edition (SE) и Enterprise Edition (EE).

🟡С 2017 года Oracle перешла на регулярный 6-месячный цикл обновлений Java.

🟡Java 8 стала революционным обновлением благодаря введению лямбда-выражений и потоков.


〰️ Технические особенности
🟡JVM (Java Virtual Machine) — основа платформы Java, позволяющая Java-программам запускаться на любом устройстве.

🟡Garbage Collector в Java автоматически управляет памятью, освобождая программиста от необходимости явного освобождения памяти.

🟡Java Development Kit (JDK) содержит инструменты для разработки и тестирования программ на Java.

🟡Java Runtime Environment (JRE) включает в себя JVM и библиотеки классов Java, необходимые для запуска Java-приложений.

🟡Система управления пакетами в Java называется Maven и Gradle.

📎 Читать остальные факты о Java

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍214🔥1🥰1
🖥 Вышла интегрированная среда разработки Apache NetBeans 22

29 мая 2024 года состоялся релиз интегрированной среды разработки Apache NetBeans 22. Проект имеет поддержку языков программирования Java SE, Java EE, PHP, C/C++, JavaScript, Rust и Groovy.

Готовые сборки NetBeans 22 в ближайшее время будут сформированы для скачивания под Linux (snapcraft.io, flathub), Windows и macOS.

🖥 GitHub

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍4🔥1
🖥 Вызов Python-скрипта из кода на Java

Иногда чтобы не переделывать любимые костыли необходимо вызывать Python-скрипты из нашего Java-кода. Это можно сделать с помощью классов Process, ProcessBuilder и Jython. Давайте рассмотрим, как мы можем использовать каждый из них.

▶️ Поехали

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍133🔥2👏1😁1
🖥 Charset: почему имена не константы? Решение проблемы

🔜 Итак, сразу к делу. В Java наименования кодировок реализованы таким образом, что могут обеспечить гибкость выполнения программы, позволяя легко адаптироваться к возникающим новым кодировкам без необходимости её перекомпиляции. Для надёжного получения экземпляра кодировки, используйте метод Charset.forName("название_кодировки"). Если искомая кодировка присутствует в системе, её можно будет успешно найти, иначе будет вызвано исключение UnsupportedCharsetException.

Пример использования:
// UTF-8 кодировка
Charset charset = Charset.forName("UTF-8");

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


🔜 Эволюция обработки кодировок в Java

JDK 1.4 — эра Charset. Начиная с JDK 1.4, Java внесла значительные изменения в работу с кодировками, введя класс Charset в пакет java.nio. Это послужило началом движения в сторону более структурированного и универсализированного API.

Java 7 — стандартизация кодировок. Продолжая развивать идеи обработки текстовых данных, в Java 7 был внедрен класс StandardCharsets, который предоставил разработчикам стандартизированные ссылки на часто используемые кодировки.

Поддержка кодировок может варьироваться в зависимости от платформы. Java, в свою очередь, обеспечивает поддержку определённых кодировок, таких как UTF-8 и ISO-8859-1. Класс Charset служит для проверки доступности кодировок на текущей системе.


🔜 Преимущества использования констант и экземпляров Charset

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

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

📎 Читать подробнее

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍133
🖥 Циклический связанный список — Java-реализация

Циклический связанный список — это вариант связанного списка, в котором последний узел указывает на первый узел, завершая полный круг узлов.
Другими словами, этот вариант связанного списка не имеет пустого элемента в конце.

Благодаря этому простому изменению мы получаем некоторые преимущества:
— Любой узел в кольцевом связанном списке может быть отправной точкой.
— Следовательно, весь список можно пройти, начиная с любого узла.
— Поскольку последний узел кругового связанного списка имеет указатель на первый узел, легко выполнять операции постановки в очередь и удаления из очереди.
В целом, это очень полезно при реализации структуры данных "очередь".

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

▶️ Поехали к реализации циклического связанного списка

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍113🔥2
🖥Принципы SOLID с примерами на Java

Отличная демонстрация принципов SOLID на Java, к каждому пункту приведён антипаттерн «как делать не нужно»

А вот и расшифровка самого акронима SOLID, повторить лишним не будет

🟡S — Single Responsibility Principle (Принцип единственной ответственности). Суть: класс должен обладать единственной ответственностью и иметь одну и лишь одну причину для его изменения.

🟡O — Open-Closed Principle (Принцип открытости/закрытости). Суть: программные сущности должны быть открыты для расширения и закрыты для изменения.

🟡L — Liskov Substitution Principle (Принцип подстановки Барбары Лисков). Суть: функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа, не зная об этом.

🟡I — Interface Segregation Principle (Принцип разделения интерфейса). Суть: программные сущности не должны зависеть от методов, которые они не используют; много узконаправленных интерфейсов - это лучше для клиента этого интерфейса, чем один интерфейс общего назначения, "умеющий всё".

🟡D — Dependency Inversion Principle (Принцип инверсии зависимостей). Суть: 1) модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций. 2) Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

📎 Поехали

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍144🔥2🥰1👏1
🖥 JSqlParser — библиотека Java для парсинга SQL

JSqlParser разбирает SQL-запрос и преобразует его в иерархию Java-классов.
Сгенерированная иерархия может быть перемещена с помощью паттерна Visitor

🖥 GitHub
🔘 Wiki

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112🔥1
2025/07/09 05:15:20
Back to Top
HTML Embed Code: