java как создать консольное приложение

Работа с Java в командной строке

Каждая программа обычно содержится в отдельном каталоге. Я придерживаюсь правила создавать в этом каталоге по крайней мере две папки: src и bin. В первой содержатся исходные коды, во второй — результат компиляции. В данных папках будет структура каталогов, зависящая от пакетов.

Один файл

Можно сделать и без лишних папок.
Берем сам файл HelloWorld.java.
Переходим в каталог, где лежит данный файл, и выполняем команды.
В данной папке появится файл HelloWorld.class. Значит программа скомпилирована. Чтобы запустить

Отделяем бинарные файлы от исходников

Теперь сделаем тоже самое, но с каталогами. Создадим каталог HelloWorld и в нем две папки src и bin.
Компилируем
Здесь мы указали, что бинарные файлы будут сохраняться в отдельную папку bin и не путаться с исходниками.

Используем пакеты

А то, вдруг, программа перестанет быть просто HelloWorld-ом. Пакетам лучше давать понятное и уникальное имя. Это позволит добавить данную программу в другой проект без конфликта имен. Прочитав некоторые статьи, можно подумать, что для имени пакета обязательно нужен домен. Это не так. Домены — это удобный способ добиться уникальности. Если своего домена нет, воспользуйтесь аккаунтом на сайте (например, ru.habrahabr.mylogin). Он будет уникальным. Учтите, что имена пакетов должны быть в нижнем регистре. И избегайте использования спецсимволов. Проблемы возникают из-за разных платформ и файловых систем.

Поместим наш класс в пакет с именем com.qwertovsky.helloworld. Для этого добавим в начало файла строчку
В каталоге src создадим дополнительные каталоги, чтобы путь к файлу выглядел так: src/com/qwertovsky/helloworld/HelloWorld.java.
Компилируем
В каталоге bin автоматически создастся структура каталогов как и в src.

Если в программе несколько файлов

HelloWorld.java
Calculator.java
Adder.java

Если удивляет результат

Отладчик запускает свой внутренний терминал для ввода команд. Справку по последним можно вывести с помощью команды help.
Указываем точку прерывания на 9 строке в классе Calculator

Запускаем на выполнение.

Чтобы соориентироваться можно вывести кусок исходного кода, где в данный момент находится курссор.

Узнаем, что из себя представляет переменная а.

Выполним код в текущей строке и увидим, что sum стала равняться 2.

Поднимемся из класса Adder в вызвавший его класс Calculator.

Удаляем точку прерывания

Можно избежать захода в методы, используя команду next.

Проверяем значение выражения и завершаем выполнение.

Хорошо бы протестировать

Запускаем. В качестве разделителя нескольких путей в classpath в Windows используется ‘;’, в Linux — ‘:’. В консоли Cygwin не работают оба разделителя. Возможно, должен работать ‘;’, но он воспринимается как разделитель команд.

Создадим библиотеку

Класс Calculator оказался полезным и может быть использован во многих проектах. Перенесем всё, что касается класса Calculator в отдельный проект.

Измените также назавания пакетов в исходных текстах. В HelloWorld.java нужно будет добавить строку

Надо узнать, что у библиотеки внутри

Можно распаковать архив zip-распаковщиком и посмотреть, какие классы есть в библиотеке.
Информацию о любом классе можно получить с помощью дизассемблера javap.

Лучше снабдить библиотеку документацией

Изменим для этого класс калькулятора.

Документацию можно создать следующей командой. При ошибке программа выдаст список возможных опций.

В результате получиться следующее
image loader

Можно подписать jar-архив

Если требуется подписать свою библиотеку цифровой подписью, на помощь придут keytool и jarsigner.
Генерируем подпись.

Генерируем Certificate Signing Request (CSR)

Содержимое полученного файла отправляем в центр сертификации. От центра сертификации получаем сертификат. Сохраняем его в файле (например, qwertokey.cer) и импортируем в хранилище

Файл qwertokey.cer отправляем всем, кто хочет проверить архив. Проверяется он так

Использование библиотеки

Есть программа HelloWorld, которая использует библиотечный класс Calculator. Чтобы скомпилировать и запустить программу, нужно присоединить библиотеку.
Компилируем

Собираем программу

Это можно сделать по-разному.

Первый способ

Здесь есть тонкости.
В строке

не должно быть пробелов в конце.
Вторая тонкость описана в [3]: в этой же строке должен стоять перенос на следующую строку. Это если манифест помещается в архив сторонним архиватором.
Программа jar не включит в манифест последнюю строку из манифеста, если в конце не стоит перенос строки.
Ещё момент: в манифесте не должно быть пустых строк между строками. Будет выдана ошибка «java.io.IOException: invalid manifest format».

При использовании команды echo надо следить только за пробелом в конце строки с main-class.

Второй способ

В данном способе избегаем ошибки с пробелом в main-class.

Третий способ

Включили код нужной библиотеки в исполняемый файл.

Запуск исполняемого jar-файла

Файл calculator.jar исполняемым не является. А вот helloworld.jar можно запустить.
Если архив был создан первыми двумя способами, то рядом с ним в одном каталоге должна находится папка lib с файлом calculator.jar. Такие ограничения из-за того, что в манифесте в class-path указан путь относительно исполняемого файла.

При использовании третьего способа нужные библиотеки включаются в исполняемый файл. Держать рядом нужные библиотеки не требуется. Запускается аналогично.

Как быть с приложениями JavaEE

Аналогично. Только библиотеки для компиляции нужно брать у сервера приложений, который используется. Если я использую JBoss, то для компиляции сервлета мне нужно будет выполнить примерно следующее

Структура архива JavaEE-приложения должна соответствовать определенному формату. Например

Способы запуска приложения на самом сервере с помощью командной строки для каждого сервера различны.

Надеюсь, данная статья станет для кого-нибудь шпаргалкой для работы с Java в командной строке. Данные навыки помогут понять содержание и смысл Ant-скриптов и ответить на собеседовании на более каверзные вопросы, чем «Какая IDE Вам больше нравится?».

Источник

Создание простейшего приложения на Java

В этой статье речь идет об организации простейшего приложения на Java для начинающих разработчиков, которые уже изучили концепции объектного подхода. Но для опытных возможно тоже будет интересно.

Зачастую начинающие разработчики задают вопроc: «С чего начать создание приложения», какие классы использовать и прочее.

Не стоит воспринимать статью как пример «Hello World» для начинающих изучать язык Java и объектно-ориентированный подход. Предполагается, что читатель уже знаком с языком Java, однако у него возникают вопросы указанные выше.

В этой статье мы даем ответ на эти вопросы.

Для того, чтобы строить приложение постепенно, используя концепции объектно-ориентированного подхода мы будем представлять все элементы нашего приложения в виде объектов соответствующих классов. Поэтому приложение тоже будет отдельным классом. Для запуска приложения будем создавать его экземпляр.

Теперь более подробно…

Сначала создается класс Application — он будет моделью всего приложения.

Далее создаем точку входа в приложение — метод main:

Этот метод выполняется при запуске Java с указанием основого класса (Application). В нем мы создаем экземпляр приложения и инициализируем его, а далее запускаем. Для этого будем использовать методы init и run:

В методе init мы делаем необходимую инициализацию приложения. В методе run же распологается основной код хода приложения.

Метод init можно не использовать, однако мы исходим из того, что наше приложение проходит две стадии — инициализация и запуск.

Остальные элементы нашего приложения можно разбить на модельные классы и виды (окна, панели). Например, представим, что мы создаем простейший кредитный калькулятор. Тогда класс CreditCalculator — будет моделью калькулятора. В методе init будем инициализировать калькулятор, а в run вычислять:

Таким образом, создание приложения можно начать с создания класса Application и далее добавлять необходимые модельные классы с которыми требуется работать.

Теперь о том, как запустить приложение

Мы будем исходить из того, что вы используете среду разработки Eclipse, Intellij IDEA или NetBeans. И класс Application создали именно в ней. В этих же средах для запуска нужно вызвать контекстное меню и нажать Run… или Run As Application в редакторе класса Application.

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

Крутых девелоперов просьба не ругать — вы и так все знаете! А лучше поругайте — тогда будет понятно что неправильно.

Просьба перед оценкой статьи оставить конструктивный комментарий.

Источник

Библиотека примеров приложений Java

2.1. Простое консольное приложение

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

Немного теории

Главный класс консольного приложения должен называться точно так же, как и файл исходного текста этого класса.

В этом классе необходимо определить статический метод с именем main. Данный метод играет роль точки входа приложения, то есть ему будет передано управление сразу после запуска консольного приложения.

Описание примера

В нашем примере мы определили класс SimpleConsoleApp, разместив его исходный текст в файле с именем SimpleConsoleApp.java. Файл должен называться именно так, в противном случае компилятор выдаст сообщение об ошибке.

В классе SimpleConsoleApp есть поле szAppName класса String, конструктор и один метод с именем main:

Статический метод main не возвращает никакого значения и потому имеет тип void. В качестве единственного аргумента этому методу передается массив строк параметров запуска приложения.

Конструктор класса SimpleConsoleApp вызывается при создании объекта данного класса. Заметим, что при запуске консольного приложения объект главного класса не создается. При необходимости вы можете создать такой объект в методе main.

Рассмотрим теперь исходный текст метода main.

Внутри этого метода мы определили несколько переменных, которые будут использованы для ввода с консоли целого числа:

Далее метод main создает объект sc класса SimpleConsoleApp:

Это приводит к вызову конструктора, инициализирующего поле szAppName. Следующая строка выводит название приложения на консоль, обращаясь к указанному полю:

Для вывода в стандартный выходной поток мы применили метод println, добавляющий после выведенной строки символы возврата каретки и перевода строки. В результате приглашение для ввода числа, расположенное в исходном тексте строкой ниже, будет отображено с новой строки:

Здесь мы воспользовались методом print, не вызывающем при выводе перевод строки. Поэтому текстовый курсор остановится сразу за строкой «Enter number: «.

Теперь о вводе строки с клавиатуры.

Мы применили метод read, вызвав его для стандартного потока ввода java.lang.System.in. Заметим, что во время работы этого метода, а также в процессе преобразования полученного массива символов в целое число возможно возникновение исключений. Поэтому мы заключили фрагмент кода, выполняющий эти функции, в блок try-catch:

Далее мы должны преобразовать последовательность введенных символов в число (ожидается, что пользователь будет вводить цифры). Для этого мы выполняем промежуточное преобразование массива символов в текстовую строку класса String, удаляем из нее символы возврата каретки и перевода строки, а затем создаем на базе полученной строки объект класса Integer.

Создание строки выполняется так:

Строка String содержит 16-разрядные символы Unicode. Чтобы преобразовать массив байт в строку Unicode, мы задаем значение старшего байта во втором параметре конструктора, равное нулю.

Удаление символов возврата каретки и перевода строки выполняется при помощи класса StringTokenizer, предназначенного для разбора текстовых строк. Создавая объект этого класса, мы передаем конструктору через второй параметр список символов-разделителей:

Метод nextElement возвращает первый элемент строки до разделителя, то есть в нашем случае всю строку до символов возврата каретки и перевода строки.

Далее строка преобразуется в объект класса Integer (целое число):

В процессе этого преобразования возможно возникновение исключения java.lang.NumberFormatException (например, если пользователь ввел текстовую строку, которую невозможно преобразовать в численное значение). Блок catch выводит название исключения на консоль.

На следующем этапе мы преобразуем объект Integer к примитивному типу int, вызывая для этого метод intValue:

Таким образом мы воспользовались классом Integer для преобразования текстовой строки в значение типа int. Результат этого преобразования затем отображается на консоли:

Источник

Разработка консольных java-приложений


Цель работы

В данной лабораторной работе разрабатывается консольное приложение для реализации простейшего приложения с использованием массивов, строк и файлов.

Указания к работе

Консольное приложение Java представляет собой откомпилированный класс, содержащий точку входа.

Рассмотрим простой пример:

Здесь класс First используется только для того, чтобы определить метод main(), который и является точкой входа и с которого начинается выполнения программы интерпретатором Java. Метод main() содержит аргументы-параметры командной строки String[] args в виде массива строк и является открытым (public) членом класса. Это означает, что метод main() виден и доступен любому классу. Ключевое слово static объявляет методы и переменные класса, используемые для работы с классом в целом, а не только с объектом класса. Символы верхнего и нижнего регистров в Java различаются, чем Java напоминает языки C/C++ и PHP.

Вывод строки «Первая программа на Java!» в примере осуществляет метод println() (ln – переход к новой строке после вывода) свойства out класса System, который доступен в программе автоматически вместе с пакетом java.lang. Приведенную программу необходимо поместить в файл, имя которого совпадает с именем класса и с расширением java. Простейший способ компиляции написанной программы – вызов строчного компилятора:

При успешной компиляции создается файл First.class. Этот файл можно запустить на исполнение из командной строки с помощью интерпретатора Java следующим образом:

Для разработки программы возможно использование и специальных средств разработчика.

Ниже рассмотрены основные классы, используемые при выполнении лабораторной работы, рассмотрен пример решения одного из заданий.

Класс java.io.File

Для работы с файлами в приложениях Java могут быть использованы классы из пакета java.io, одним из которых является класс File.

Класс File служит для хранения и обработки в качестве объектов каталогов и имен файлов. Этот класс не описывает способы работы с содержимым файла, но позволяет манипулировать такими свойствами файла, как права доступа, дата и время создания, путь в иерархии каталогов, создание, удаление, изменение имени файла и каталога и т.д.

Основные методы класса File и способы их применения рассмотрены в следующем примере.

У каталога (директории) как объекта класса File есть дополнительное свойство – просмотр списка имен файлов с помощью методов list(), listFiles(), listRoots().

Класс System

Класс System содержит набор полезных статических методов и полей системного уровня. Экземпляр этого класса не может быть создан или получен.

Наиболее широко используемой возможностью, предоставляемой System, является стандартный вывод, доступный через переменную System.out. Стандартный вывод можно перенаправить в другой поток (файл, массив байт и т.д., главное, чтобы это был объект PrintStream, смотри документацию JSDK: http://docs.oracle.com/javase/6/docs/api/ ):

При запуске этого кода на экран будет выведено только:

И в файл «d:\file2.txt» будет записано:

Аналогично могут быть перенаправлен стандартный ввод System.in – вызовом System.setIn(InputStream) и поток вывода сообщений об ошибках System.err – вызовом System.setErr (по умолчанию все потоки – in, out, err – работают с консолью приложения).

Класс String

Класс String содержит основные методы для работы со строками:

В следующем примере массив символов и целое число преобразуются в объекты типа String с использованием методов этого класса.

Пример консольного java-приложения

Задание: Ввести n строк с консоли. Вывести на консоль строки и их длины, упорядоченные по возрастанию.

Источник

Пример консольного java-приложения

Лабораторная работа №1. Разработка консольных java-приложений

Цель работы:ознакомление с операторами Java, предназначенными для работы с консолью, операциями, литералами, различными типами операторов, разработка консольного приложения для реализации простейшего приложения с использованием массивов, строк и файлов.

Требования и рекомендации к выполнению задания:

1. проанализировать полученное задание, выделить информационные объекты и действия;

2. разработать программу с использованием требуемых типов и операторов.

Консольное приложение Java представляет собой откомпилированный класс, содержащий точку входа.

Рассмотрим простой пример:

public class First <

public static void main(String[] args) <

System.out.print ln («Первая программа на Java!»);

Здесь класс First используется только для того, чтобы определить метод main(), который и является точкой входа и с которого начинается выполнения программы интерпретатором Java. Метод main() содержит аргументы-параметры командной строки String[] args в виде массива строк и является открытым (public) членом класса. Это означает, что метод main() виден и доступен любому классу. Ключевое слово static объявляет методы и переменные класса, используемые для работы с классом в целом, а не только с объектом класса. Символы верхнего и нижнего регистров в Java различаются, чем Java напоминает языки C/C++ и PHP.

Вывод строки «Первая программа на Java!» в примере осуществляет метод println() (ln – переход к новой строке после вывода) свойства out класса System, который доступен в программе автоматически вместе с пакетом java.lang. Приведенную программу необходимо поместить в файл, имя которого совпадает с именем класса и с расширением java. Простейший способ компиляции написанной программы – вызов строчного компилятора:

При успешной компиляции создается файл First.class. Этот файл можно запустить на исполнение из командной строки с помощью интерпретатора Java следующим образом:

Для разработки программы возможно использование и специальных средств разработчика.

Класс System

Класс System содержит набор полезных статических методов и полей системного уровня. Экземпляр этого класса не может быть создан или получен.

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • java запустить стороннее приложение
  • java для разработки мобильных приложений