Рубрики
Без рубрики

Возвращение к Яве (снова) в выходные

Нет времени до начала следующего семестра, придется заново изучать Java, почему бы не сделать это в выходные?. Помеченный java, проект.

Я снова попал во вселенную 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”