Telegram Web Link
💻 Запуск Kotlin кода без IDE

▶️Итак, вопрос: как скомпилировать простенький код написанный на Kotlin без IDE?


▶️Вот пошаговая инструкция:

1. Загрузить компилятор. Найти последнюю версию можно здесь.

2. Распаковать компилятор в отдельную папку, добавить bin директорию в переменную окружения PATH. Об этом можно почитать тут. Bin содержит скрипты, необходимые для сборки и запуска кода на Windows, OS X и Linux.
Другой вариант установки компилятора: для OS X, Linux, Cygwin, FreeBSD или Solaris (возможно, и другие UNIX-системы), то можно использовать SDKMAN https://sdkman.io/.
Запускаем в терминале:

$ curl -s https://get.sdkman.io | bash

Затем следуем инструкциям. Потом потребуется открыть новое окно терминала и установить Kotlin с помощью команды:
$ sdk install kotlin


▶️Теперь кратко о создании и запуске простого приложения.

1. Создаем файл - `hello.kt` со следующим кодом:

fun main(args: Array<String>) {
println("Hello, World!")
}


2. Компилируем, используя командную строку:

$ kotlinc hello.kt -include-runtime -d hello.jar

Подробнее о флагах компиляции можно почитать в мане:
$ kotlinc -help


3. Запускаем приложение:

$ java -jar hello.jar


📎Более подробно о других вариантах установки компилятора, компиляции библиотек, запуске Kotlin-скриптов и прочем в доках

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Как реализовать потокобезопасную неблокирующую очередь на Java

🟡Итак, задача: нужно реализовать потокобезопасную (Thread Safe) неблокирующую очередь на Java.
Нельзя использовать локи или synchonized, при этом очередь должна корректно работать в многопоточной среде.

🟡Для решения будем использовать так называемые неблокирующие алгоритмы основанные на атомиках.
В основе неблокирующих алгоритмов лежит использование атомарной CAS (Compare-and-Swap или Compare-and-Set) операции. В Java для этого можно использовать атомики, которые поддерживают эти атомарные операции.

📎 Все детали реализации этой очереди в статье

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Статические методы и синхронизация в Котлин

На собеседовании может всплыть вопрос в духе: "Что будет являться монитором для блока кода, помеченного сразу двумя аннотациями @Synchronized и @JvmStatic в Котлин?".
Держите полезную статью, в которой рассматривается, для чего используются данные аннотации и каким будет результат при их одновременном использовании.

А пока немного о @Synchronized и @JvmStatic:

🟡Аннотация @Synchronized в Kotlin является аннотацией для методов и блоков кода, которая обеспечивает синхронизацию доступа к ним между потоками. Когда метод или блок кода помечены аннотацией @Synchronized, только один поток может получить право их выполнения в определенный момент времени, остальные потоки будут ожидать освобождения монитора, прежде чем получить доступ. Это позволяет избежать состояния гонки и обеспечить правильное выполнение кода в многопоточной среде.

🟡Аннотация @JvmStatic в Kotlin указывает компилятору, что функция или свойство должны быть статическими в Java-коде после компиляции. Когда мы используем @JvmStatic перед функцией или свойством в объекте- компаньоне или внутри объекта, компилятор Kotlin создает соответствующий статический элемент в Java-коде. Это позволяет вызывать этот элемент напрямую из Java-кода, без необходимости ссылаться на экземпляр класса или объекта.

📎 Статья

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Java в контейнере: особенности эксплуатации

Держите хороший доклад о том, как использовать Java вместе с Docker-контейнерами.
В докладе освещены нюансы работы Linux, контейнеризации и JVM друг с другом.
Рассказывается про использование ресурсов системы и особенности работы лимитов, сетевые особенности контейнеров и диагностика JVM в контейнере.

План:
• Контейнеры и его особенности
• Настройка памяти и файловой системы в контейнерах
• Управление памятью в контейнерах
• Работа с памятью в контейнерах
• Работа с контейнерами
• Файловая система контейнеров
• Диагностика контейнеров
• Настройка и использование GVM
• Настройка и использование JMX
• Альтернативные решения

📎 YouTube
📎 Презентация

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Отличный учебник по Java

Здесь раскрыты самые основные темы + много примеров кода.
Самое то, чтобы освежить какие-то моменты перед собеседованием.

🟡Оглавление
├╼ Типы данных
├╼ Литералы
├╼ Переменные и константы
├╼ Операторы
├╼ Управляющие последовательности
├╼ Модификаторы
├╼ Ввод с клавиатуры
├╼ Особенности строк
├╼ Коллекции
├╼ Дата и время
├╼ Исключения
╰╼ Интерфейсы

📚 Учебник

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Java — выполнение действий раз в минуту бесконечно

▶️Как можно выполнять определенные действия после запуска приложения и бесконечно долго раз в минуту?

▶️Всё довольно просто, можно реализовать это например так:
Thread run = new Thread(new Runnable() {
@Override
public void run() {
while(true){
try {
//ДЕЛАЕМ
Thread.sleep(1000); //1000 - 1 сек
} catch (InterruptedException ex) {
}
}
}
});
run.start(); // заводим

С этим кодом можно делать что угодно, добавить final boolean (заменить им true) и остановить thread когда нужно, при остановке что-то сделать, если нужно.

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Axiom JDK Express

🟡Axiom JDK заявила о выпуске Axiom JDK Express. Axiom JDK Expres представляет собой российскую среду исполнения Java c улучшенной производительностью. В новой среде была оптимизирована платформа Java. Это позволило ускорить Java‑приложения до 15% без дополнительных затрат на оборудование. По словам разработчиков, благодаря полной совместимости со стандартом миграция на Axiom JDK Express с Java SE и сборок OpenJDK происходит бесшовно.

🟡Новая среда улучшает работу LTS‑версий Java 8 и 11 с долгосрочной поддержкой, утверждают разработчики. Как они рассказали, почти половина всех Java‑приложений использует Java 8 и 11. При переходе этих приложений на Axiom JDK Express они получат значительный прирост скорости и экономию аппаратных средств без переписывания кода.

🟡Axiom JDK Express объединяет виртуальную машину версии JVM 17 и среду исполнения JDK 8 или 11, повышая производительность систем до 15%. При этом не нужно менять версию фреймворка или код приложения. Достаточно изменить только один компонент вместо полноценной миграции на новый релиз JDK. Среда исполнения Axiom JDK Express ускоряет системы до уровня версии JDK 17 без изменений кода, включая сервер приложений Libercat.

Среди улучшений JDK 8:
— обновление механизмов сборки мусора, включая поддержку суб‑миллисекундных пауз и терабайтной кучи во всех версиях;

— запуск на 10% быстрее;

— скорость сжатия на 85%;

— скорость распаковки на 113%.

🟡Также Axiom JDK рассказала, что её инженеры будут поддерживать JDK 8 до марта 2031 года,

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Cобеседование по Java. Spring Framework

Встречайте большую подборку вопросов и ответов по Spring для подготовки к собеседованию.
Есть и теоретические вопросы, и те, которые проверяют наличие реального опыта
В общем — самое то, чтобы освежить важные концепции

Вот несколько вопросов:
Как использовать JDBC Template в Spring Framework?
Каковы различные части DispatcherServlet?
Что вы понимаете под Dependency Injection (DI)?
Что такое Аспектно-ориентированное программирование (AOП)?
Как работать с Kafka в Spring Framework?
Как добавить компонент в Spring?
Что такое жизненный цикл Spring Bean?

📎 Ссылка на вопросы/ответы
📎2250 реальных вопросов с собеседования на Java Developer

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Отличия Sequence API vs Collection в Kotlin

Держите хорошее объяснение отличий между 2 этими понятиями.

В статье рассматриваются примеры, которые помогают визуализировать разницу между Sequence API и обычными коллекциями.

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

Sequence API в Kotlin могут обрабатывать данные более эффективно, чем обычные коллекции.

📎Читать подробнее: [ru], [en]

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2024/11/17 11:48:00
Back to Top
HTML Embed Code: