Как написать программу на java в блокноте
На хабре уже есть статья про java байткод. Я решил ее немного дополнить и в меру сил развить тему. Мне кажется довольно логичным разобрать простейшее приложение на Java. А что может быть проще «Hello world»?
Для своего эксперимента я создал директорию src, куда в папку hello положил файл App.java:
Скопилируем файл командой:
javac src/hello/App.java -d classes/
На выходе в папке classes у меня появился файл App.class Для начала сравним размеры java и class файлов.
App.java 139B
App.class 418B
Это было неожиданно. Мне почему-то казалось, что скомпилированный файл должен быть меньше. Попытаюсь открыть class файл:
hexdump App.class
Довольно непривычный вид для Java кода. Попробуем с помощью описание формата class файлов понять, что здесь закодировано.
Это 4 байта для magic, который определяет формат файла.
minor version — Минорная версия как следует из названия
major version — 2 байта под мажорную версию.
Сочетание minor и major version говорит о том, что я компилировал этот код с помощью J2SE 8.
Эти два байта представляют constant_pool_count и отвечают за размер constant_pool. В моем случае count равен 29, а размер пула, соответственно 28. Дальше идут элементы вида:
cp_info u1 tag; // 1 байт на тег
u1 info[]; // массив с описанием
>
Рассмотрим элементы в constant_pool.
1-ый элемент:
Этот тег соответствует CONSTANT_Methodref, а значит дальше должно быть описание:
CONSTANT_Methodref_info u1 tag;
u2 class_index;
u2 name_and_type_index;
>
соответственно:
class_index, указывает на 6 элемент в constant_pool
name_and_type_index, указывает на 15 элемент в constant_pool
Пока не понятно, на какой метод указывает эта ссылка и мы идем дальше:
2-ой элемент:
Это CONSTANT_Fieldref, а значит дальше ищем:
CONSTANT_Fieldref_info u1 tag;
u2 class_index;
u2 name_and_type_index;
>
И тут все очень похоже на предыдущий элемент, хотя не понятно что это за поле, в своем классе я вроде ничего такого не объявлял.
class_index в 16 элементе
name_and_type_index в 17 элементе
3-ий элемент:
tag для CONSTANT_String
получаем, что самое интересное лежит в 18 элементе:
Tag соответствующий ссылке на метод:
класс которого описан в 19 элементе
a название и тип в 20 элементе:
5-ый элемент:
Tag для CONSTANT_Class
название, которого в 21 элементе
6-ой элемент:
Cнова CONSTANT_Class
c названием в 22 элементе
Как мы помним 1-ый элемент constant_pool относится к этому классу.
7-ой элемент:
tag, CONSTANT_Utf8, первая строчка
Она должна соответствовать:
CONSTANT_Utf8_info u1 tag;
u2 length;
u1 bytes[length];
>
Тогда длина нашей строчки 6 байт:
А значение "<init>":
Это особое название, так помечаются конструкторы.
строчка длины 3 — "()V":
Это описание нашего конструктора без параметров, который был упомянут в седьмом элементе.
9-ый элемент:
CONSTANT_Utf8
10-ый элемент:
Строка LineNumberTable
11-ый элемент
«main»:
12-ый элемент
"([Ljava/lang/String;)V"
13-ый элемент
«SourceFile»
14-ый элемент
«App.java»:
15-ый элемент
Tag, соответствует CONSTANT_NameAndType
а значит нам понадобится
CONSTANT_NameAndType_info u1 tag;
u2 name_index;
u2 descriptor_index;
>
и тогда:
ссылка на 7 элемент
ccылка на 8 элемент
Учитывая что первый элемент ссылался на это, мы можем заключить что первым был объявлен конструктор класса без параметров. Название класса, мы должны найти в 22 элементе.
16-ый элемент:
Tag, для CONSTANT_Class
c названием в 23 элементе
17-ый элемент:
Tag, CONSTANT_NameAndType, со ссылкой на 24 и 25 элемент constant_pool
19-ый элемент:
Tag, для CONSTANT_class c названием в 25-ом элементе
20-ый элемент:
Tag CONSTANT_NameAndType cо ссылкой на 27 и 28 элемент
21-ый элемент:
«hello/App»
22-ой элемент:
«java/lang/Object»
23-ий элемент:
«java/lang/System»
24-ый элемент:
«out»
25-ый элемент:
«Ljava/io/PrintStream;»
26-ой элемент:
«java/io/PrintStream»
27-ой элемент:
«println»
methods_count у нас 2 метода в классе, конструктор по умолчанию и метод main:
Method 1 — Constructor
Attribute 1
Один из самых интересных аттрибутов с кодом нашего метода code[code_length], разбор инструкций отдельная большая тема:
Аттрибут закончился и продолжается описание метода
Method 2 — main
Attribute 1 код метода main
Описание методов закончено и идет описание атрибутов класса
Теперь когда мы закончили с по-байтовым разбором class файла, становится понятно как работает:
Как вы знаете, Java — один из самых популярных языков программирования в мире и его знание существенно увеличит вашу значимость как программиста. Итак, вы решили начать писать на этом языке. Вам понадобится поставить JDK для того, чтобы писать и запускать программы на Java. JDK — набор софта, разработанного Oracle, содержащий в себе компилятор (javac), среду выполнения (Java Runtime Environment), стандартную библиотеку языка, примеры и документацию. Прочитав эту статью, вы узнаете, как установить и настроить JDK на своей системе, что такое среда разработки и какие варианты IDE существуют для Java. Также вы напишете свою первую программу на Java.
Установка Java Development Kit
- Перейдите на сайт Oracle и загрузите JDK для вашей платформы.
- После загрузки извлеките полученный архив и запустите извлеченное приложение.
- В процессе установке выберите вариант «Development Tool» и нажмите «Next».
- Спустя некоторое время установка завершится.
Итак, вы установили Java Development Kit, но это еще не всё. Необходимо настроить его для вашей системы.
Настройка JDK на примере Windows
После установки JDK и JRE не помешает установить на компьютер одну из IDE.
Установка IDE
Для начала разберёмся, что такое IDE.
Для написания сложных программ целесообразно использовать IDE. Мы рассмотрим наиболее популярные.
Блокнот
Да, и в блокноте можно писать код! Для разработки вам потребуется всего лишь установить JDK и указать путь к ней. Пишете код в блокноте, компилируете с помощью командной строки. Тем не менее, для разработки сложных программ это не самый лучший вариант из-за отсутствия каких-либо дополнительных возможностей, присутствующих в продвинутых IDE.
NetBeans
NetBeans — выбор профессиональных Java-разработчиков. В ней есть уникальные возможности и инструменты, которые позволят вам сделать вашу программу кроссплатформенной, а код удобочитаемым. NetBeans поддерживает не только Java, но и другие языки программирования для десктоп- и веб-разработки. Она полностью бесплатна, скачать её можно с официального сайта. Вот лишь некоторые её возможности:
Eclipse
- возможность форматировать код так, как вам удобно;
- поддержка разбиения кода на модули;
- лёгкость использования одного и того же кода в разных проектах;
- перетаскивание (drag-and-drop);
- просмотр содержимого библиотек;
- удобный интерфейс.
IntelliJ IDEA
IntelliJ IDEA — известная IDE для Java, написанная, как ни странно, на Java. Укомплектована уникальными инструментами и позволяет без проблем ориентироваться в программе. Нахождение ошибок и отладка кода никогда не были такими легкими, как с IntelliJ IDEA.
JCreator
JCreator — продвинутая и самая быстрая IDE для Java, написанная на C++.
Пишем свою первую программу
Итак, вы установили и настроили JDK, JRE и IDE для Java. Каков следующий шаг? Конечно же, написать программу, чтобы окончательно убедиться, что всё работает и вы готовы к изучению языка. Вы познакомитесь с базовой структурой кода на Java и создадите свою первую программу! Стоит отметить, что перед изучением Java следует ознакомиться хотя бы с самыми простыми принципами объектно-ориентированного программирования.
Структуру программы на Java можно представить так:
Структура программы на Java
В файле с исходным кодом содержится несколько классов — это части программы, имеющие определённые функции. Хорошей практикой считается разбиение программы на несколько файлов с исходным кодом, каждый со своим назначением. В классах содержатся методы — действия, которые могут выполнять объекты данного класса. В методе содержатся команды, с помощью которых вы можете получить желаемый результат.
17 ноября, Онлайн, Беcплатно
Приступим к написанию вашей первой программы. По традиции — это программа, выводящая на экран «Hello, world!».
Разберём по частям написанное нами:
Используйте Блокнот для разработки первой Java-программы
Блокнот - самый простой инструмент для разработки Java-программ.
Первый шаг: написание
Создайте новый текстовый документ с именем Hello и измените расширение файла на .java.
Введите наш программный код в текстовое поле
Здесь поговорим о структуре программного кода Java
Это программный код, который мы только что ввели, и его грамматическая структура выглядит следующим образом:
В процессе написания java-программ необходимо строго использовать спецификации java-программ. Точный ввод каждой строки кода в соответствии со спецификациями является одним из самых основных стандартов навыков для программиста.
Шаг 2: компилировать
Запустите cmd с ключом win + R, откройте командную строку, найдите букву диска и папку, в которой находится файл Hello.java. (Номер диска +: вы можете напрямую ввести соответствующий диск, например E :, путь к файлу cd, вы можете открыть соответствующую папку)
Введите команду javac Hello.java и нажмите Enter.
Файл .class с таким же именем будет создан в каталоге, в котором находится файл Hello.java.
Это файл с байт-кодом, который может быть выполнен программой java.exe.
Кстати, процесс компиляции java-программы
Первый - написать исходную программу. Файл java хранится в папке src.
Затем с помощью компилятора скомпилируйте файл .java в файл байт-кода .class и сохраните его в папке bin.
Наконец, JVM платформы времени выполнения java перекомпилирует файл байт-кода в двоичный машинный язык, который может быть распознан аппаратным обеспечением компьютера и выводом.
Как показано на рисунке:
Шаг 3: запустить
Введите команду java Hello и нажмите Enter.
Эффект вывода показан на рисунке, так что простейшая java-программа от записи до выполнения завершена.
В сфере разработки при изучении языка программирования принято своим первым приложением поприветствовать мир. Вне зависимости от конкретной среды, фраза, выведенная в результате работы программы Hello World, будет начальной стадией для освоения. Далее рассматривается пример такого простого приложения на языке Java.
Подготовка к созданию первого приложения
Перед тем как создать свой Hello World на Java, нужно скачать и установить программное обеспечение. Первое, что понадобится, - JDK. Это набор инструментов разработчика. Скачивать его желательно с официального сайта компании Oracle. Последняя версия Java на сегодняшний день - 8. Инструментарий разработчика доступен для скачивания и установки практически на всех известных платформах.
Далее существует выбор использовать какую-либо IDE, то есть среду разработки, например, Eclipse или NetBeans, или же писать код в любом текстовом редакторе. Для упрощения в статье будет использоваться более простой способ - с помощью блокнота.
Hello World на Java с использованием простого текстового редактора
Предполагается, что в системе уже имеется установленный JDK. Теперь нужно запустить самый обыкновенный блокнот в Windows или же gedit либо nano в Linux. Можно его сразу сохранить, назвав файл, например HelloWorld.java. Затем в текстовое поле нужно ввести несколько простых строк кода:
Здесь происходит именование класса. По требованиям языка Java он должен называться так же, как и сам файл, в котором находится. Далее идут фигурные скобки, элементы синтаксиса Java, показывающие, где класс начинается и заканчивается. Внутри него теперь нужно определить метод, который будет что-то выполнять:
public static void main(String[] args)
Именно с метода main происходит начало работы любой программы на Java. Ключевое слово public - модификатор доступа, показывающий, что он публичный и может использоваться где угодно. О том, как с ним обращаться, можно ознакомиться в официальной документации к языку.
Далее идёт static, что означает статичный метод, то есть создаваемый не при вызове, а в начале работы программы. Ключевое слово void говорит о том, что main не будет возвращать каких-либо данных, а просто что-то выполнит.
String в скобках и символы [] означают, что метод может принимать на вход некие значения, например, для их последующей обработки. А имя переменной args дает возможность обращаться по нему к данным внутри метода. Стоит обратить внимание на то, что main, как и класс, обрамлен фигурными скобками, показывая «свою» территорию.
Ну и осталось теперь добавить способ вывода результата работы программы:
public static void main(String[] args)
Данная команда просто выводит строку в скобках на экран. В конце используется оператор точка с запятой. Таким образом в Java указывается конец выражения или строки кода. Значение, которое нужно вывести в качестве результата, заключается в кавычки.
Запуск и тестирование первого приложения
Чтобы запустить получившийся Hello World на Java, нужно перейти в консоль. В Windows она называется командной строкой, а в Linux - терминалом. Оказавшись в консоли, нужно добраться к сохранённому ранее файлу HelloWorld.java. Например, в Windows он может оказаться по пути C:\Java\Hello. Тогда достаточно ввести в консоль команду cd C:\Java\Hello. Перейдя в папку с файлом программы, нужно сначала перевести её в байт-код. Для этого используется следующая конструкция:
После этого нужно запустить получившийся класс на исполнение. Для этого тоже имеется отдельная команда:
На экране консоли должен появиться результат работы Hello World на Java - приветствие окружающего мира.
Заключение
Программирование на Java - очень интересное и полезное занятие. Данная платформа способна запускаться на множестве устройств - от простых мобильных телефонов до огромных серверных станций. Многие большие интернет-порталы в качестве основной платформы для обработки запросов сервера используют именно Java. Также на ней пишется код и для популярной сейчас операционной системы Android. А с такой тенденцией развития, как у неё, у Java имеется большое будущее.
Читайте также: