Сообщения

Сообщения за 2019

Основные опции JVM для повышения производительности и отладки

Изображение
Если вы являетесь Java-разработчиком или администратором Java приложения, вам поможет в работе знание того, что означают опции JVM, а также их важность и как они влияют на ваше приложение. Обзор параметров JVM Если говорить о параметрах JVM, то есть три типа параметров, которые вы можете включить в JVM: стандартные, нестандартные и расширенные параметры. Если вы используете расширенную опцию, вы всегда используете опцию с -XX. Точно так же, если вы применяете нестандартную опцию, вы используете -X. Стандартные опции ничего не добавляют к опции. Какие параметры JVM используются вашим приложением? Если приложение работает в Linux, вы можете использовать ps -ef | grep java для идентификации процесса Java и просмотра параметров JVM, напечатанных как аргументы процесса. Если в системе выполняется более одного Java-процесса, вам может потребоваться использовать ключевое слово, уникальное для вашего Java-приложения. Если ваш аргумент слишком длинный, попробуйте использовать ps

Как работает JVM

Изображение
JVM (виртуальная машина Java) действует как механизм времени выполнения для запуска приложений Java. JVM - это то, что фактически вызывает метод main, присутствующий в коде Java. JVM является частью JRE (Java Runtime Environment). Java-приложения называются WORA (Write Once Run Anywhere, Пиши однажды запускай везде). Это означает, что программист может разрабатывать код Java в одной системе и ожидать, что он будет работать в любой другой системе с поддержкой Java без каких-либо настроек. Это все возможно благодаря JVM. Когда мы компилируем файл .java, компилятор Java генерирует файлы .class (содержащие байт-код) с такими же именами классов, которые присутствуют в файле .java. Этот файл .class проходит различные этапы, когда мы его запускаем. Эти шаги вместе описывают всю JVM. Подсистема загрузчика классов (Class Loader Subsystem) В основном подсистема загрузчика классов отвечает за три вида деятельности. загрузка (Loading) связывание (Linking) инициализация (Initialization)

Загрузка, компоновка и инициализация в JVM

Изображение
Виртуальная машина Java (JVM) выполняет за кулисами большую работу, выполняя двоичный файл классов, переданный ей для исполнения. Это не так просто, потому что это похоже на вызов JVM с помощью команды java с файлом класса, переданным ему в качестве аргумента командной строки. Файл класса проходит много этапов, но в этом посте мы в основном рассмотрим первые три этапа выполнения, называемые загрузкой, связыванием и процессом инициализации. Это огромная и сложная тема сама по себе. Поэтому здесь только кратко описаны ключевые аспекты, чтобы понять, что это такое. Загрузка (loading), компоновка (связывание, linking) и инициализация (initialization) - это начальные процессы, которые JVM запускает, как только байт-код, называемый файлом класса, загружается в JVM для выполнения. Другие процессы, такие как создание экземпляров, сборка мусора и финализация, происходят на средних этапах жизненного цикла класса. И, наконец, процесс разгрузки происходит в конце жизненного цикла. JVM обеспечива

Методы класса Object в Java

Изображение
Класс Object является корнем иерархии классов. У каждого класса есть Object как суперкласс. Все объекты, включая массивы, реализуют методы этого класса. Методы класса Object Метод getClass() public final Class getClass() Возвращает класс времени исполнения (runtime class) этого Object. Возвращенный объект Class - это объект, который заблокирован статическими синхронизированными методами представленного класса. Фактический тип результата - Class<? extends |X|> где |X| заменяется статическим типом выражения, для которого вызывается getClass. Например, в этом фрагменте кода не требуется приведение: Number n = 0; Class c = n.getClass(); Метод getClass() возвращает: Объект Class, представляющий класс времени исполнения (runtime class) этого объекта. Метод hashCode public int hashCode() Возвращает значение хэш-кода для объекта. Этот метод поддерживается для использования хэш-таблиц, таких как те, что предоставляются HashMap. Основной контракт метода hashCo

Паттерн Builder (Строитель) в Java

Изображение
Цель паттерна Builder - отделить строительство сложного объекта от его представления, так что один и тот же процесс строительства может создать разные представления. Паттерн Builder позволяет создавать различные варианты объекта, избегая загрязнения конструктора. Полезно, когда может быть несколько вариантов объекта. Или когда есть много шагов, вовлеченных в создание объекта. Согласно Википедии: паттерн Builder - это паттерн проектирования программного обеспечения для создания объектов с намерением найти решение для анти-паттерна телескопического конструктора. Что такое анти-шаблон телескопического конструктора? Рассмотрим на примере: public Car(String name, Brand brand, Color color, Body body, Wheels wheels, Tuning tuning){} Как вы можете видеть, количество параметров конструктора может быстро выйти из-под контроля, и это может стать трудным понять расположение параметров. Плюс этот список параметров может продолжать расти, если вы захотите добавить больше опций в будущем.

Как преобразовать Java объект в/из JSON

Изображение
В этом посте будет описано как использовать Jackson 2.x чтобы преобразовать Java объекты в/из JSON. Преобразовать объект в JSON Используйте writeValue(...) для преобразования Java объекта в JSON файл. Используйте writeValueAsString(...) для преобразования Java объекта в JSON строку. import com.fasterxml.jackson.databind.ObjectMapper; import java.io.File; public class Main { public static void main(String[] args){ ObjectMapper mapper = new ObjectMapper(); Animal animal = new Animal(); animal.setName("cat"); try { // Java объект в JSON файл mapper.writeValue(new File("/home/myuser/animals.json"), animal); // Java объект в JSON строку String jsonString = mapper.writeValueAsString(animal); System.out.println(jsonString); } catch (Exception e){ System.out.println(e.getMessage()); } } } Вывод: {"name":"cat"

Как получить текущий timestamp в Java

Изображение
Чтобы получить текущий timestamp в Java : package main; import java.sql.Timestamp; public class Main { public static void main(String[] args){ Timestamp timestamp = new Timestamp(System.currentTimeMillis()); System.out.println(timestamp); } } Вывод: 2019-10-03 10:09:21.61 Вот еще два более подробных примера как получить текущий timestamp в Java: 1. java.sql.Timestamp Есть два метода получить текущий java.sql.Timestamp package main; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Date; public class Main { private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss"); public static void main(String[] args) { // Метод 1 Timestamp timestamp = new Timestamp(System.currentTimeMillis()); System.out.println(timestamp); // Метод 2 - через Date Date date = new Date(); System.out.println(new Timestamp(date.getTime()

Сортировка "пузырьком" на Java

Сортировка "пузырьком" (Bubble sort) - это самый простой алгоритм сортировки, он сравнивает первые два элемента, если первый больше второго, меняет их местами, продолжает выполнять (сравнивает и меняет местами) следующую пару смежных элементов. Затем он начинается снова с первых двух элементов, сравнивает, переставляет, пока не потребуется перестановка. Вот пример реализации сортировки "пузырьком" на Java. public static int[] sort(int[] data) { int dataLength = data.length; int swap; boolean sorted; for (int i = 0; i < dataLength; i++) { sorted = true; for (int a = 1; a < (dataLength - i); a++) { if (data[a - 1] > data[a]) { swap = data[a - 1]; data[a - 1] = data[a]; data[a] = swap; sorted = false; } } // если отсортировано - выходим, пропуская ненужный цикл. if (sorted) break; } return data; }

Что такое REST?

REST (Representational State Transfer) был введен и определен в 2000 году Роем Филдингом (Roy Fielding) в его докторской диссертации. REST - это архитектурный стиль для проектирования распределенных систем. Это не стандарт, а набор ограничений, таких как отсутствие состояния, наличие отношений клиент/сервер и единый интерфейс. REST не связан строго с HTTP, но чаще всего ассоцируется с ним. Принципы REST Ресурсы (Resources) предоставляют понятные URI структуры каталогов. Представления (Representations) передают JSON или XML для представления объектов данных и атрибутов. Сообщения (Messages) явно используют методы HTTP (например, GET, POST, PUT и DELETE). Взаимодейтсвия без состояния (Stateless interactions) не сохраняют клиентский контекст на сервере между запросами. Зависимости состояния ограничивают масштабируемость. Клиент хранит состояние сеанса. HTTP методы Используйте HTTP методы для сопоставления операций CRUD (создание, получение, обновление, удаление) с HTTP запро

О технологии Java

Изображение
Java - это и язык программирования, и платформа. Язык программирования Java Язык программирования Java - это язык высокого уровня, который можно охарактеризовать всеми следующими модными словечками: Простой Объектно-ориентированный Распределенный Многопоточный Динамический Архитектурно-нейтральный Портативный Высоко производительный Надежный Безопасный В языке программирования Java весь исходный код сначала пишется в виде простых текстовых файлов, заканчивающихся расширением .java . Эти исходные файлы затем компилируются в файлы .class компилятором javac . Файл .class не содержит код, свойственный вашему процессору; вместо этого он содержит байт-код — машинный язык виртуальной машины Java (Java VM). Затем средство запуска java запускает ваше приложение с экземпляром виртуальной машины Java. Обзор процесса разработки программного обеспечения. Поскольку виртуальная машина Java доступна на различных операционных системах, одни и те же .class файлы могу