ProPaintMobile
 Полезное
 Общение
 

Плагин javac или добавляем Extension Methods в Java


Screenshot from 2017-03-22 21-32-47.png
В Java 8 появилась возможность писать плагины к компилятору javac. С их помощью можно получать управление на нужном этапе компиляции и производить дополнительные проверки или изменения. Каждый плагин имеет название и может принимать аргументы для настройки своей работы.

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


Настройка
Для реализации плагина нужно добавить в зависимости tools.jar, который находится в составе JDK.
  1. dependencies
...
Продолжить

Рейтинг:  3  (За: 3 | Против: 0)
Добавил: aNNiMON

Комментарии (3)

Java 9. java.awt.Taskbar


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

Однако не все системы имеют панель задач, поэтому сперва следует проверить её поддержку:
  1. if (!Taskbar.isTaskbarSupported()) {
  2.     System.out.println("Taskbar is not supported");
  3.     return;
  4. }

Список поддерживаемых методов в Taskbar тоже ограничен, поэтому перед использованием метода нужно проверить, что действие, которое он выполняет, поддерживается. Для этого есть метод boolean isSupported(Taskbar.Feature) и класс перечислений Taskbar.Feature. Код:
  1. final Taskbar taskbar = Taskbar.getTaskbar();
  2. Arrays.stream(Taskbar.Feature.values())
...
Продолжить

Рейтинг:  5  (За: 5 | Против: 0)
Добавил: aNNiMON

Комментарии (5)

Java 9. Project Jigsaw. Модульность


Ключевой особенностью предстоящего релиза Java 9 является поддержка модульности, которую принесёт Project Jigsaw. Цель этого проекта — сделать Java SE платформу более гибкой, производительной и защищённой за счёт разбиения JDK на модули и внедрения модульной системы.

Модуль
В отличие от обычного jar-файла, который означал для JVM лишь хранилище кода и ресурсов, jar-модуль содержит класс module-info, который предоставляет:
  - имя модуля;
  - информацию о модулях-зависимостях, которые нужны для корректной компиляции и работы;
  - информацию о пакетах, которые открывает (экспортирует) этот модуль;
  - список сервисов, которые поставляет модуль в рантайме.

В третьем пункте кроется одно важное изменение, которого доселе так не хватало....
Продолжить

Рейтинг:  5  (За: 5 | Против: 0)
Добавил: aNNiMON

Комментарии (9)

Java 9 Early Access. Установка


Менее полугода остаётся до релиза Java 9, так что, думаю, пора потихоньку изучать новшества и готовиться к изменениям.

Начнём с установки и подготовим рабочее пространство для работы с Java 9 EA.


Установка JDK9
Скачать сборку можно с официального сайта https://jdk9.java.net/download/, приняв сперва лицензию.

Обратите внимание: Java 9 следует устанавливать дополнительно, а не как замену существующей версии Java (а лучше и вовсе на виртуалку), иначе часть приложений может перестать работать.

Для Ubuntu-based систем есть возможность установки из PPA, но в этом случае мы получим Java 9 как основную версию в системе и сборка не всегда может...
Продолжить

Рейтинг:  4  (За: 4 | Против: 0)
Добавил: aNNiMON

Комментарии (10)

Пишем движок для конфигов на LiketEngine


Это моя первая, поэтому не ругайте сильно.
Не люблю тянуть время, так что начнем.
Движок будем называть CommandShell.
Для начала определимся с командами, которые будем использовать на движке, эти:
1. echo
2. run
3. exec
4. stop
5. exit
Пока 5 команд хватит.
Создадим библиотеку команд, т.е. класс в котором будет хранится список команд.
Создаем класс например CommandShellLibrary и наследуем его от liket.engine.Library.
  1. package shell.engine;
  2.  
  3. import liket.engine.*;
  4. import liket.engine.work.*;
  5.  
  6. public class CommandShellLibrary extends Library
  7. {
  8.     public CommandShellLibrary(WorkListener workListener)
  9.     {
  10.         super(workListener);
  11.         int id = 0;
  12.         commands = new String[5];
  13.  
  14.         commands[id++] = "echo";
  15.         commands[id++] = "run";
  16.         commands[id++] =
...
Продолжить

Рейтинг:  5  (За: 6 | Против: 1)
Добавил: Aladdin

Комментарии (12)
Всего: 28
1 2 3 ... 6 >>
Категории

Онлайн: 29 (6/23)

Telegram
 

Аноним2800 р.
NaruTrey800 р.
vlavolk522 р.
Freddy500 р.
mr-demiurg200 р.
  © aNNiMON (Melnik Software)
 
Яндекс.Метрика