Автономное (самостоятельное) приложение – application
Для запуска приложения необходимо загрузить сначала реализацию виртуальной машины Java (Java Virtual Machine — JVM ). В состав JDK включен интерпретатор языка Java — модуль Java.exe, в котором реализованы функции JVM. Изучите правила создания автономного приложения по материалам пособия к лабораторной работе №0.
Апплет – applet
Апплетом называется мини-приложение Java, работающее под управлением Web-браузера, в который встроена виртуальная Java-машина (JVM). Все наиболее популярные браузеры являются Javaсовместимыми. Изучите правила создания апплета по материалам пособия к лабораторной работе №0. Технология апплетов поддерживается версией Java-платформы J2SE ( J ava 2 S tandard E dition ).
Комбинированное приложение
Комбинированное приложение Java может работать и как автономное приложение, и как апплет. В приложениях может использоваться либо интерфейс командной строки, либо графический интерфейс пользователя (Graphical User Interface — GUI). В апплетах и комбинированных приложениях можно применять только GUI.
Java для начинающих: Урок 31. Коллекция List
Сервлет – servlet
Сервлет является мини-приложением Java, выполняющимся, в отличие от апплета, на стороне Web-сервера. Сервлеты служат для формирования динамических HTML-страниц. В настоящее время технология сервлетов применяется совместно с технологией JSP ( J ava S erver P ages — серверных страниц Java). Страница JSP (HTML-код со специальной вставкой) обеспечивает автоматическое преобразование Java-кода в сервлет при первом обращении к ней клиента. Данные технологии поддерживаются версией Java-платформы J2EE ( J ava 2 E nterprise E dition ).
Мидлет – midlet
Java-приложение для M icro I nformation D evices , в том числе мобильных телефонов. Данная технология поддерживается версией Java-платформы J2ME ( J ava 2 M icro E dition ).
Различия между автономными приложениями и апплетами
Автономное приложение
1) Устанавливается на локальной машине пользователя. 2) Запускается на выполнение при помощи, установленной на локальной машине, среды выполнения Java-программ JRE ( J ava R untime E nvironment ), основой которой является модуль java.exe , интерпретатор языка Java, реализующий функции JVM . 3) Может работать как консольное приложение (с интерфейсом командной строки) или графическое приложение (с графическим интерфейсом пользователя). 4) Точкой входа в программу является метод main , который должен принадлежать основному public — классу приложения. Метод объявляется как public static .(См. комментарии к примеру HelloApplication.java .) 5) Параметры приложению передаются в командной строке (через пробел после имени выполняемого файла класса, указываемого без расширения . class ): java ClassName param1 param2 . JVM помещает их в массив строк типа String , после чего передаёт массив строк методу main .
Источник: studfile.net
Список Книг Для Программистов | Лучшие/Худшие
Типы программ Java
Java — это язык программирования. Он дает возможность программистам писать инструкции для компьютера, используя команды на английском языке. Он является языком высокого уровня, так как пишется не машинными кодами; не нулями и единицами и не инструкциями процессора.
Как и английский язык, Java имеет набор правил, которые определяют, как пишутся инструкции. Эти правила известны как его ”синтаксис». После того, как программа была написана, инструкции высокого уровня переводятся в числовые коды, которые компьютеры могут понять и выполнить.
Есть много приложений и веб-сайтов, которые не будут работать, если вы не установили Java, и еще больше создаются каждый день. Java работает быстро, безопасно и надежно. От ноутбуков до дата-центров, от игровых консолей до научных суперкомпьютеров, от мобильных телефонов до интернета, Java есть везде.
Типы приложений Java:
- десктопные приложения
- апплеты (очень редко можно встретить в настоящее время)
- веб-приложение
- распределенное приложение
Апплет — это небольшой скрипт, встраиваемый на страницы сайтов для расширения их функциональности; более динамичного взаимодействия с посетителем веб ресурса. В настоящее время java апплеты практически полностью вытеснены скриптами на JavaScript
Веб-приложения выполняются на сервере. Доступ к сайтам осуществляется через веб-клиенты, т. е. браузеры, такие как Internet Explorer, Opera или Chrome. Всякий раз, когда вы получаете доступ к некоторому веб-сайту, указав URL (универсальный локатор ресурсов), вы получаете доступ к некоторому веб-приложению. В этом плане Java сравним с PHP, например.
- Java Сервлеты
- Java Server Pages (JSP), и
- формат HTML
Доступ к сайту осуществляется путем указания URL-адреса. Если URL-адрес соответствует HTML-странице, веб-сервер просто возвращает HTML-страницу клиенту, который затем отображает ее. Если URL-адрес соответствует сервлету или JSP, то он выполняется на сервере и результат / ответ возвращается клиенту, который затем отображается клиентом.
Распределенные приложения. Программу на Java можно разделить на несколько модулей/компонентов (программ Java), которые могут работать на разных машинах. Программы/приложения Java, работающие на разных машинах, могут взаимодействовать друг с другом. Чтобы быть более точным, объекты Java на одной машине могут вызывать методы на объектах Java, работающих на другой машине. Таким образом, Java имеет поддержку распределенной обработки в самом языке.
Автор этого материала — я — Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Источник: upread.ru
Записки программиста
Краткий обзор GUI-фреймворков для Java и мое первое простенькое GUI-приложение на Swing
Так исторически сложилось, что с UI мне приходилось работать очень мало. Видимо, поэтому мне так интересные всякие там Qt и wxWidgets — все кажется новым, интересным, необычным. Впрочем, коль скоро я взялся за изучение Java, речь сегодня пойдет не о Qt и не о wxWidgets, а о Swing. Сегодня совместными усилиями мы напишем простенькое GUI-приложение на Java, с кнопочками, списками и даже умеющее менять шкурки!
Ситуация с GUI фреймворками в мире Java несколько запутанная. Насколько я смог разобраться, дела обстоят следующим образом.
- AWT (Abstract Window Toolkit) был первым GUI фреймворком. Идея была правильная — AWT использует нативные контролы, то есть, они выглядят и физически являются родными, независимо от того, где вы запускаете свое приложение. К сожалению, оказалось, что (1) общих для различных окружений контролов мало и (2) писать кроссплатформенные нативные интерфейсы так, чтобы ничего не поползло и не разъехалось, очень сложно;
- Поэтому на смену AWT пришел Swing. Swing использует формочки, создаваемые AWT, на которых он своими силами рисует контролы. Работает это хозяйство, понятно дело, медленнее, но зато UI становится намного более портабельным. Swing предлагает на выбор программисту множество Look
- SWT (Standard Widget Toolkit) — фреймворк, написанный в IBM и используемый в Eclipse. Как и в AWT, используются нативные контролы. SWT не входит в JDK и использует JNI, поэтому не очень соответствует идеологии Java «написано однажды, работает везде». Вроде как при очень сильном желании можно запаковать в пакет реализацию SWT для всех-всех-всех платформ, и тогда приложение вроде как даже станет портабельным, но только до тех пор, пока не появится какая-нибудь новая операционная система или архитектура процессора;
- JavaFX активно пилится в Oracle и позиционируется, как скорая замена Swing. Идеологически JavaFX похож на Swing, то есть, контролы не нативные. Среди интересных особенностей JavaFX следует отметить хардверное ускорение, создание GUI при помощи CSS и XML (FXML), возможность использовать контролы JavaFX’а в Swing’е, а также кучу новых красивых контролов, в том числе для рисования диаграмм и 3D. Видео с более детальным обзором JavaFX можно посмотреть здесь. Начиная с Java 7, JavaFX является частью JRE/JDK;
- NetBeans Platform (не путать с NetBeans IDE!) — это такая штука, которая, как я понял, работает поверх Swing и JavaFX, предоставляет как бы более удобный интерфейс для работы с ними, а также всякие дополнительные контролы. В одном приложении, использующем NetBeans Platform, я видел возможность перетаскивать вкладки drug
Не исключено, что есть и другие фреймворки. Наиболее каноничным на сегодняшний день является Swing, поэтому им и займемся.
Выше что-то говорилось про какие-то там LookFeel и позволит переключаться между ними прямо в процессе работы программы.
Наше приложение будет выглядеть следующим образом под Ubuntu:
А так оно будет выглядеть при запуске под Windows:
Как видите, JRE под Windows и Linux включают в себя разный набор LFeel или даже написать свой. По умолчанию используется LFeel Nimbus.
Если вам хочется, чтобы приложение было похоже на нативное, то под Linux следует выбрать LF Windows. Неплохой идеей, видимо, будет предусмотреть в вашей программе возможность переключаться между различными LF.
Давайте посмотрим на исходный код приложения. Коллеги UI-щики заверили меня, что никаких WYSIWYG редакторов они не используют, а если используют, то разве что для быстрого прототипирования. Из неплохих WYSIWYG редакторов назывался JFormDesigner. Говорят, генерируемый им код даже похож на код, написанный человеком, а не адовую().последовательность().вызовов().методов(). В общем, весь код писался лапками в IntelliJ IDEA.
В Swing и AWT, если мы хотим что-то поменять в UI, мы должны делать это из event dispatching thread. Статический метод invokeLater принимает класс, реализующий интерфейс Runnable, и вызывает его метод run() внутри event dispatching thread. Если вам не знаком приведенный выше синтаксис, то это такой способ в Java объявить класс, не присваивая ему имени. Классы без имени называются анонимными.
Часто анонимные классы в Java выполняют ту же роль, что играют лямда-фукнции в функциональных языках программирования. Помимо прочего, поддерживаются и замыкания. Интересно, что, в отличие от лямбд, анонимные классы в Java позволяют передать сразу пачку методов. Притом, при помощи наследования и абстрактных классов, для всех или части методов можно взять их реализацию по умолчанию.
В итоге event dispatching thread вызовет метод createGUI(), полный код которого следующий:
private static void createGUI ( ) {
JList < String >list = new JList <> ( ) ;
list. setSelectionMode ( ListSelectionModel . SINGLE_SELECTION ) ;
JScrollPane listScrollPane = new JScrollPane ( list ) ;
JPanel topPanel = new JPanel ( ) ;
topPanel. setLayout ( new BorderLayout ( ) ) ;
topPanel. add ( listScrollPane, BorderLayout . CENTER ) ;
ActionListener updateButtonListener = new UpdateListAction ( list ) ;
updateButtonListener. actionPerformed (
new ActionEvent ( list, ActionEvent . ACTION_PERFORMED , null )
) ;
JButton updateListButton = new JButton ( «Update list» ) ;
JButton updateLookAndFeelButton = new JButton ( «Update Look ) ;
JPanel btnPannel = new JPanel ( ) ;
btnPannel. setLayout ( new BoxLayout ( btnPannel, BoxLayout . LINE_AXIS ) ) ;
btnPannel. add ( updateListButton ) ;
btnPannel. add ( Box . createHorizontalStrut ( 5 ) ) ;
btnPannel. add ( updateLookAndFeelButton ) ;
JPanel bottomPanel = new JPanel ( ) ;
bottomPanel. add ( btnPannel ) ;
JPanel panel = new JPanel ( ) ;
panel. setBorder ( BorderFactory . createEmptyBorder ( 5 , 5 , 5 , 5 ) ) ;
panel. setLayout ( new BorderLayout ( ) ) ;
panel. add ( topPanel, BorderLayout . CENTER ) ;
panel. add ( bottomPanel, BorderLayout . SOUTH ) ;
JFrame frame = new JFrame ( «Look ) ;
frame. setMinimumSize ( new Dimension ( 300 , 200 ) ) ;
frame. setDefaultCloseOperation ( WindowConstants . EXIT_ON_CLOSE ) ;
frame. add ( panel ) ;
frame. pack ( ) ;
frame. setVisible ( true ) ;
updateListButton. addActionListener ( updateButtonListener ) ;
updateLookAndFeelButton. addActionListener (
new UpdateLookAndFeelAction ( frame, list )
) ;
}
Тут, в общем-то, нет ничего супер сложного. Создаются кнопки, список, список заворачивается в JScrollPane, чтобы у списка была прокрутка. Элементы управления располагаются во фрейме при помощи панелей. Панели могут иметь различные лайоуты, здесь мы использовали BorderLayout и BoxLayout. Принцип аналогичен тому, что используется в wxWidgets.
Для реакции на различные события, например, нажатия кнопок, используются классы, реализующие интерфейс ActionListener. В приведенном выше коде используется два таких класса — UpdateListAction и UpdateLookAndFeelAction. Как нетрудно догадаться по названию, первый класс отвечает за обработку нажатий на левую кнопку «Update list», второй — на правую кнопку «Update LookFeel, мы эмулируем нажатие на кнопку «Update list». Для этого мы создаем экземпляр класса ActionEvent и передаем его в качестве аргумента методу actionPerformed класса UpdateListAction.
Реализация класса UpdateListAction следующая:
static class UpdateListAction implements ActionListener {
private JList < String >list ;
public UpdateListAction ( JList < String >list ) {
this . list = list ;
}
for ( UIManager. LookAndFeelInfo info : infoArray ) {
if ( info. getClassName ( ) . equals ( currentLookAndFeelClassName ) ) {
currentLookAndFeelIndex = lookAndFeelIndex ;
}
lookAndFeelList. add ( info. getName ( ) ) ;
lookAndFeelIndex ++;
}
String [ ] listDataArray = new String [ lookAndFeelList. size ( ) ] ;
final String [ ] newListData =
lookAndFeelList. toArray ( listDataArray ) ;
final int newSelectedIndex = currentLookAndFeelIndex ;
В конструкторе передается указатель на список, в котором мы будет отображать доступные LookFeel, а также определения текущего LookFeel имеет имя и имя класса, это разные вещи. Пользователю мы должны показывать имена, а при переключении Look String >list ;
private JFrame rootFrame ;
public UpdateLookAndFeelAction ( JFrame frame, JList < String >list ) {
this . rootFrame = frame ;
this . list = list ;
}
for ( UIManager. LookAndFeelInfo info : infoArray ) {
if ( info. getName ( ) . equals ( lookAndFeelName ) ) {
String message = «Look + lookAndFeelName ;
try {
UIManager . setLookAndFeel ( info. getClassName ( ) ) ;
SwingUtilities . updateComponentTreeUI ( rootFrame ) ;
} catch ( ClassNotFoundException e1 ) {
message = «Error: » + info. getClassName ( ) + » not found» ;
} catch ( InstantiationException e1 ) {
message = «Error: instantiation exception» ;
} catch ( IllegalAccessException e1 ) {
message = «Error: illegal access» ;
} catch ( UnsupportedLookAndFeelException e1 ) {
message = «Error: unsupported look and feel» ;
}
JOptionPane . showMessageDialog ( null , message ) ;
break ;
}
}
}
}
Здесь мы просто (1) находим LF при помощи static метода setLookAndFeel класса UIManager и (3) перерисовываем главный фрейм нашего UI, а также, рекурсивно, расположенные на нем элементы, при помощи static метода updateComponentTreeUI класса SwingUtilities. Наконец, мы уведомляем пользователя при помощи сообщения, все ли прошло успешно.
Также хотелось бы сказать пару слов об отладке GUI-приложений на Java, и не только GUI. Во-первых, в Swing есть такое волшебное сочетание клавиш Ctr + Shift + F1, которое выводит в stdout информацию о том, как расположены контролы. Очень полезно, если хочется слизать UI у конкурентов.
Во-вторых, есть такой интересный хоткей Ctr + . Если нажать его в консоли работающего приложения на Java, будут выведены все нитки и их стектрейсы. Удобно, если вы словили дэдлок. Наконец, в-третьих, во время разработки GUI бывает полезно разукрасить панели в разные цвета. Сделать это можно так:
buttonsPanel. setBackground ( Color . BLUE ) ;
Код к этой заметке вы найдете здесь. Присмотритесь к нему повнимательнее. Как по мне, код получился не таким уж и многословным или там в стиле «фабрика фабрик для создания фабрик», как любят наговаривать на Java некоторые. В принципе, все довольно просто и понятно, и выкинуть из кода особо нечего.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.
Источник: eax.me