Я снова попал во вселенную Java, пройдя через несколько фреймворков JavaScript, немного C++ и тонну Python. Когда-то в прошлом я отказался от Java, и я действительно не знаю, почему.
Модные словечки Java
- Простой
- Безопасный
- Портативный
- Объектно-ориентированный
- Крепкий
- Многопоточный
- Архитектура – нейтральная
- Интерпретированный
- Высокая производительность
- Распределенный
- Динамический
Настройка среды
Установка Java
Я использовал комплект для разработки Java SE (JDK) 8 ( версия для разработчиков 1.8) от Oracle . OpenJDK – это то же самое, без проблем с собственностью. После этого я задаю переменные среды JAVA_HOME
и ПУТЬ
, чтобы указать каталоги, в которых находятся двоичные файлы Java цепочки инструментов .
Редактор кода v/сторона
Личные Предпочтения. VS Код как редактор и IntelliJ IDEA как среда разработки – отличный выбор. Я использую оба 😁
Проверка
Выполнение java-версия &&java-версия
выводит все, что указано ниже:
$ java -version && javac -version java version "1.8.0_231" Java(TM) SE Runtime Environment (build 1.8.0_231-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode) javac 1.8.0_231
Байт-код
Обзор
Вот блок-схема!
Сборник
Я написал текстовый файл с расширением .java
, содержащий несколько строк кода, и скомпилировал его в Java Байт-код с компилятором javac
. Результатом компиляции стал двоичный файл .class
, который будет использоваться для интерпретации.
Толкование
Файл .class
загружается на Виртуальную машину Java с помощью загрузчика классов в JVM. Файлы .class
уязвимы, и с помощью шестнадцатеричного редактора злоумышленник может изменить поведение программы. Чтобы устранить эту проблему, байт-код затем проверяется с помощью средства проверки байт-кода в JVM. Компилятор Java Just-In-Time (JIT) или интерпретатор времени выполнения затем интерпретирует байт-код и создает машинный код в зависимости от архитектуры системы, который затем может быть загружен в память для выполнения.
Код
Вот как “Привет, мир!” будет выглядеть на Java. Занятия, я знаю, да, это связано с некоторыми накладными расходами, но продолжайте идти. И да, это немного многословно.
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
Но я должен добавить комментарии! Таким образом, окончательный исходный код может быть чем-то вроде:
// HelloWorld.java /** * Hello World Application * @author sudipto@ghosh.pro */ public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
Чтобы скомпилировать мой Адский мир.java
файл в байт-код, я запустил компилятор javac
с аргументом CLI.
$ javac HelloWorld.java
Это создало HelloWorld.class
файл в том же каталоге. Открытие его в текстовом редакторе не принесло большой пользы, так как это двоичный файл но вы наверняка можете увидеть несколько символов здесь и там.
����4↔ ♠☼ ►↕ ‼¶§▬☺♠☺♥()V☺♦Code☺☼LineNumberTable☺♦main☺▬([Ljava/lang/String;)V☺ SourceFile☺☼HelloWorld.java↨♀↑↓☺ Hello, World!→♀∟☺ elloWorld☺►java/lang/Object☺►java/lang/System☺♥out☺§Ljava/io/PrintStream;☺‼java/io/PrintStream☺println☺§(Ljava/lang/String;)V!♣♠☻☺ ↔☺☺♣*�☺�☺ ♠☺♠ ♂♀☺ %☻☺ �☻↕♥�♦�☺ ☻ ☺ ☻♫
Используя дизассемблер файлов классов Java, мы можем увидеть некоторый интерпретируемый ассемблерный код. Чтобы просмотреть это, я использовал инструмент javap
в JDK. Запуск javap -c HelloWorld
вывел некоторый код, который также указывает на то, что если конструктора по умолчанию нет, компилятор помещает его туда!
$ javap -c HelloWorld Compiled from "HelloWorld.java" public class HelloWorld { public HelloWorld(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."":()V 4: return public static void main(java.lang.String[]); Code: 0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 3: ldc #3 // String Hello, World! 5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V 8: return }
Чтобы загрузить мой HelloWorld.class
в JVM и выполнить его, я вызвал java
с аргументом командной строки, который соответствует базовому имени файла .class
.
$ java HelloWorld
Как только эта команда была выполнена, сообщение Здравствуй, Мир!
правильно напечатанный на экране, технически консольный.
Я ссылался на Java: Полный справочник (9-е изд.) Гербертом Шильдтом и документацией Oracle для того, чтобы разобраться в тонкостях языка.
Базовый текстовый редактор, который может открывать и сохранять текстовые файлы. Он также оснащен счетчиком слов и счетчиком символов. Узнал о StringTokenizer
, Средство чтения файлов
, Пишущая машинка
, Буферизованный читатель
, Bufferedwriter
и Строковый конструктор
. Графический интерфейс был разработан с помощью Swing и дизайнера графического интерфейса IntelliJ IDEA.
Демонстрация
Код
Код
Использовал SQLite JDBC Драйвер для взаимодействия с базой данных и управления клиентами, товарно-материальными запасами и обработки заказов фиктивного магазина. Графический интерфейс был разработан с помощью Swing и дизайнера графического интерфейса IntelliJ IDEA. Пришлось немного повозиться с JTable
, но в конце концов разобрался.
Демонстрация
Код
Код
Только что получил хабар Hacktoberfest 2019. Счастлив!
Оригинал: “https://dev.to/sudipto/revisiting-java-again-in-a-weekend-p08”