Ajax для Java разработчиков Часть 1. Строим динамические приложения на языке Java


Оглавление (нажмите, чтобы открыть):

Автор

Інформаційні управляючі системи та комп’ютерний моніторинг (ІУС КМ — 2013) / Збірка матеріалів IV Всеукраїнської науково-технічної конференції студентів, аспірантів та молодих вчених. — Донецьк, ДонНТУ — 2013, Том 2, с. 303-307.

Очень часто возникают ситуации, когда большому количеству пользователей необходимо предоставить доступ к некоторым данным, дать им возможность их получения и редактирования. Эти данные являются общими для всех пользователей и не могут располагаться на каждой клиентской машине. Для решения задач такого рода применяются веб-приложения Web-приложения, Web-application) — программные средства, предназначенные для автоматизированного выполнения действий на Web- серверах. При этом данные хранятся на сервере, там же при необходимости выполняется их программная обработка. По запросу необходимые данные предоставляются клиенту. Для обеспечения диалога с пользователем в веб- приложениях используются Web-браузеры. С одной стороны это представляет ряд преимуществ, с другой – накладывает определённые условия при выборе средств разработки интерфейсов таких приложений. В данной статье дан обзор технологий, позволяющих упростить создание веб-интерфейсов и их связывания с логической частью приложений.

Проведен анализ общих требований к проектированию интерфейсов [1]. В указанной в списке источников книге выделен ряд рекомендаций для создания «дружелюбного» к пользователю интерфейса. Можно выделить следующие из них: вместо создания отдельной страницы для редактирования данных предоставлять возможность их редактирования по месту; не требовать перезагрузки страницы при каждом действии пользователя, использовать контекстные инструменты.

Провести обзор технологий, упрощающих создание веб- интерфейсов, отвечающих вышеуказанным требованиям.

Веб-приложения создаются в различных вариантах архитектуры клиент-сервер. В таком случае клиентом выступает браузер, а сервером — веб-сервер.

Логика веб-приложения распределена между сервером и клиентом, хранение и обработка данных осуществляется, преимущественно, на сервере, её представление в удобном для пользователя виде — в браузере. Обмен информацией происходит по сети. Общая структура веб-приложения приведена на рисунке 1.

Рисунок 1 – Общая структура веб-приложения

Таким образом, чаще всего веб-приложения состоят как минимум из трёх основных компонентов.

Серверная часть веб-приложения — это программа или скрипт на сервере, обрабатывающая запросы пользователя (точнее, запросы браузера). Для программирования серверной части веб-приложения могут использоваться различные языки программирования: Java, PHP, Perl, Ruby, платформа .NET (языки VB.NET, C# и другие, поддерживаемые .NET). В рамках данной статьи предполагается, что серверная часть написана на языке Java. При каждом переходе пользователя по ссылке браузер отправляет запрос серверу. Сервер обрабатывает данный запрос, запуская некоторый скрипт, который формирует веб-страницу, описанную на языке HTML, и отсылает клиенту по сети. Браузер тут же отображает полученный в виде очередной веб-страницы результат.

Система управления базами данных, (СУБД) — программное обеспечение на сервере, занимающееся хранением данных и их выдачей в нужный момент. Серверная часть веб-приложения обращается к базе, извлекая данные, которые необходимы для формирования страницы, запрошенной пользователем.

Клиентская часть веб-приложения – это отображаемый в браузере графический интерфейс. Это то, что пользователь видит на странице. Через данный интерфейс пользователь взаимодействует с приложением, вводя информацию, нажимая на ссылки и кнопки.

Технологии создания клиентской части

Основной язык, которым описывается графический интерфейс веб-приложения — это HTML. Данный язык описывает структуру веб-страницы, размещение на ней компонентов. Оформление веб-страниц, их стиль и цветовая схема описываются в таблицах стилей — CSS. Для «оживления» графического интерфейса, придания ему динамичности, используются дополнительные технологии: скрипты JavaScript, а также встроенные в веб-страницу компоненты, созданные на Flash, Java или Silverlight. Все эти элементы веб-страницы могут взаимодействовать между собой: программа, написанная на JavaScript и выполняющаяся на веб- странице, может управлять встроенными в страницу компонентами, тем самым реализуя пользовательский интерфейс с богатыми возможностями.

Отсутствие необходимости полностью перезагружать страницу после каждого получения данных от сервера может существенно ускорить работу веб-приложения. Такая концепция имеет название Asynchronous JavaScript and XML (асинхронный JavaScript и XML, Ajax). При использовании данного подхода динамические запросы к серверу происходят без видимой перезагрузки веб-страницы: пользователь не замечает, когда его браузер запрашивает данные.

Преимущества использования фреймворка GWT

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

Google Web Toolkit (GWT) — это фреймворк с открытым исходным кодом, который позволяет Java разработчикам легко разрабатывать веб-приложения на Ajax без углубленного изучения JavaScript и браузерной разработки.

GWT предоставляет разработчику специальное Java API и позволяет разрабатывать графические пользовательские интерфейсы (GUI), избегая работы с JavaScript и абстрагируясь от протокола HTTP и DOM моделей, лежащих в основе браузеров. Все это достигается использованием GWT компилятора, который генерирует JavaScript из написанного на Java кода интерфейса. Таким образом, скомпилированное GWT приложение состоит из фрагментов HTML, XML и JavaScript. Для связи клиентской части приложения с веб-сервером в арсенале GWT есть Remote Procedure Call (RPC) – механизм удаленного вызова процедур, который осуществляет простой обмен Java- объектами между клиентом и сервером в обе стороны.

GWT также позволяет разработчикам эффективно тестировать и отлаживать приложения без необходимости преобразования приложений в JavaScript и развертывания их на веб-сервере. GWT позволяет приложениям быть запущенными в так называемом «Хостинг режиме» (“Hosted Mode”), при этом JVM исполняет код GWT приложения в виде Java байт-кода внутри встроенного браузера. После проверки и тестирования GWT приложений в «Хостинг режиме», можно скомпилировать исходный код Java в JavaScript и развернуть приложение. GWT приложения, которые были развернуты, называются запущенными в «Веб-режиме»(“Web Mode”).

Таким образом, и клиентская и серверная части веб-приложения пишутся на Java. Затем GWT компилятор преобразует клиентские Java классы в совместимые с браузером JavaScript и HTML. После чего появляется возможность развернуть эти JavaScript и HTML на веб-серверах, так что конечные пользователи будут видеть только веб-версию приложения, в то время как классы серверной стороны могут быть развернуты на Tomcat, Jetty или каком-либо ином сервлет-контейнере

Создание интерфейса веб-приложения с использованием Vaadin

Vaadin – это платформа веб-приложений с открытым исходным кодом для создания полнофункциональных интернет приложений. В противоположность библиотекам JavaScript и решениям на основе браузеров/подключаемых модулей, в ее состав входит архитектура на стороне сервера, что означает выполнение большей части программной логики на серверах. Технология Ajax используется на стороне браузера для обеспечения функционально насыщенного и интерактивного интерфейса пользователя. На стороне клиента Vaadin строится на основе GWT и может быть расширена с ее помощью.

Основным элементом Vaadin является библиотека Java, рассчитанная на упрощение создания и обслуживания высококачественных веб-интерфейсов пользователей. Основная идея сервероцентричной модели программирования Vaadin состоит в том, что она позволяет забыть о сети и программировать интерфейсы пользователей точно так же, как программируются все настольные приложения Java, то есть с помощью обычных наборов средств, таких как AWT, Swing или SWT – только еще проще. Сервероцентричная модель программирования позволяет Vaadin взять на себя управление пользовательским интерфейсом в браузере и связь Ajax между браузером и сервером. Естественно, подход Vaadin позволяет не тратить силы на изучение и отладку технологий на стороне браузеров, таких как HTML или JavaScript.

Библиотека Vaadin четко отделяет представление пользовательского интерфейса от логики и позволяет разрабатывать их по отдельности. Подход Vaadin состоит в использовании тем, определяющих внешний вид приложений. Темы контролируют внешний вид интерфейсов пользователей посредством шаблонов CSS и (при желании) HTML. Vaadin предоставляет темы по умолчанию, но при необходимости можно создавать свои собственные. В серверной части Vaadin используется Google Web Toolkit (GWT) для визуализации интерфейса пользователя в браузере. GWT идеально подходит для реализации дополнительных компонентов интерфейса и логики взаимодействия в браузере, тогда как Vaadin обрабатывает логику самого приложения на сервере. Платформа Vaadin разработана с расчетом на расширяемость и позволяет легко использовать любые компоненты GWT от сторонних производителей в дополнение к компонентам, предлагаемым в Vaadin

Выводы

Описана общая структура веб-приложений. Указаны сложности разработки динамичного пользовательского интерфейса веб-приложения. Приведены описания технологий, позволяющих упростить создание этих интерфейсов, а также обмен данными между клиентской и серверной частями веб-приложения.

Список источников

1. Скотт Б., Нейл Т. Проектирование веб-интерфейсов. – Пер. с англ. – СПб.: Символ-Плюс, 2010. 352 с., ил.

Среды разработки Java

Одни среды разработки содержат все это из коробки, другие доводятся до этого статуса с подключением плагинов и модулей. Вот 10 лучших IDE для java на сегодняшний день.

IntelliJ IDEA

Описание: Одна из самых функциональных сред для java разработки, оснащённая системой интеллектуальной помощи в написании кода. Исходя из контекста, IDEA настраивает работу автодополнения и доступность инструментов. Обилие инструментов позволяет ускорить разработку, например с помощью шаблонов и повторений, а также увеличить производительность конечной программы. Огромное количество плагинов и надстроек под любую задачу делают среду java разработки IDEA почти идеальным инструментом..

Стоимость: 499$ за первый год работы.

NetBeans

Описание: Позиционируется производителем, как среда разработки, поддерживающая все новейшие функции Java, позволяющая писать код без ошибок благодаря инструменту FindBug. Сайт, документация и сама IDE для java на русском языке. Пожалуй, самая мощная бесплатная среда java разработки.

Eclipse

Описание: У этой IDE самое больше сообщество разработчиков, отсюда же и самое внушительное количество плагинов. Обратная сторона — многие из них сомнительного качества и содержания. Полезна данная система ещё и как инструмент мультиязычной разработки — количество поддерживаемых языков благодаря энтузиастам превышает 20. Кроме того, это одна из лучших сред java разработки для android.

Codenvy

Описание: Главный акцент — удобство работы пользователя. В первую очередь это касается интуитивно понятного интерфейса, отсутствия перегруженности инструментами, возможности многопользовательского доступа к коду. Стандартные «фичи» вроде подсветки кода, рефакторинга, автозаполнения и поддержки Docker — в наличии.

Стоимость: Бесплатно для одного пользователя и ограниченного объёма. Для командной разработки — 10-20$ в месяц за память и членов команды.

Eclipse che

Описание: Совместный проект Eclipse и Codenvy, имеющий облачный фундамент. Поддерживает множество типов приложений и систем сборки для быстрой разработки. Огромное количеств плагинов и надстроек из сообщества прилагается.

BlueJ

Описание: Среда разработки для тех, кто только делает свои первые шаги в программировании, то есть школьников и студентов. Здесь простой интерфейс, минимум функций и почти нет пользовательских настроек, зато имеется версия среды java разработки на русском языке.

Greenfoot

Описание: Среда джава разработки для самых маленьких. В основе лежит обучение Java через графический интерфейс и игры, вроде того, как это реализовано в Scratch или Logo. Для серьёзной разработки Greenfoot не подходит категорически.

DrJava

Описание: Ещё одна простая и легковесная (всего 13 МБ) IDE для написания кода. Ориентирована на студентов, может быть установлена в качества плагина в Eclipse для дальнешего перехода на более функциональную платформу.

JDeveloper

Описание: Бесплатная среда ява разработки от Oracle. Позволяет максимально задействовать декларативный и визуальный подход к разработке. Имеет 2 исполнения: Java Edition и Studio Edition. Первая версия представляет общий функционал разработки, вторая — создание коммерческих приложений.

Android Studio

Описание: профильная среда java разработки на Android. В основе лежит IntelliJ IDEA, оптимизированная под решение конкретных мобильных задач: рефакторинга, сборки, шаблонизации, поиска причин низкой производительности и её увеличения. Рекомендуем посмотреть мастер-класс по созданию клиент-серверного приложения на базе Android.

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

Пришло время перейти от особенностей языка к программам, которые помогут писать код быстрее и правильнее. Среда разработки (IDE — Integrated Development Environment) включает в себя:

Одни среды разработки содержат все это из коробки, другие доводятся до этого статуса с подключением плагинов и модулей. Вот 10 лучших IDE для java на сегодняшний день.

IntelliJ IDEA

Описание: Одна из самых функциональных сред для java разработки, оснащённая системой интеллектуальной помощи в написании кода. Исходя из контекста, IDEA настраивает работу автодополнения и доступность инструментов. Обилие инструментов позволяет ускорить разработку, например с помощью шаблонов и повторений, а также увеличить производительность конечной программы. Огромное количество плагинов и надстроек под любую задачу делают среду java разработки IDEA почти идеальным инструментом..

Стоимость: 499$ за первый год работы.

NetBeans

Описание: Позиционируется производителем, как среда разработки, поддерживающая все новейшие функции Java, позволяющая писать код без ошибок благодаря инструменту FindBug. Сайт, документация и сама IDE для java на русском языке. Пожалуй, самая мощная бесплатная среда java разработки.

Eclipse

Описание: У этой IDE самое больше сообщество разработчиков, отсюда же и самое внушительное количество плагинов. Обратная сторона — многие из них сомнительного качества и содержания. Полезна данная система ещё и как инструмент мультиязычной разработки — количество поддерживаемых языков благодаря энтузиастам превышает 20. Кроме того, это одна из лучших сред java разработки для android.

Codenvy

Описание: Главный акцент — удобство работы пользователя. В первую очередь это касается интуитивно понятного интерфейса, отсутствия перегруженности инструментами, возможности многопользовательского доступа к коду. Стандартные «фичи» вроде подсветки кода, рефакторинга, автозаполнения и поддержки Docker — в наличии.

Стоимость: Бесплатно для одного пользователя и ограниченного объёма. Для командной разработки — 10-20$ в месяц за память и членов команды.

Eclipse che

Описание: Совместный проект Eclipse и Codenvy, имеющий облачный фундамент. Поддерживает множество типов приложений и систем сборки для быстрой разработки. Огромное количеств плагинов и надстроек из сообщества прилагается.

BlueJ

Описание: Среда разработки для тех, кто только делает свои первые шаги в программировании, то есть школьников и студентов. Здесь простой интерфейс, минимум функций и почти нет пользовательских настроек, зато имеется версия среды java разработки на русском языке.

Greenfoot

Описание: Среда джава разработки для самых маленьких. В основе лежит обучение Java через графический интерфейс и игры, вроде того, как это реализовано в Scratch или Logo. Для серьёзной разработки Greenfoot не подходит категорически.

DrJava

Описание: Ещё одна простая и легковесная (всего 13 МБ) IDE для написания кода. Ориентирована на студентов, может быть установлена в качества плагина в Eclipse для дальнешего перехода на более функциональную платформу.

JDeveloper

Описание: Бесплатная среда ява разработки от Oracle. Позволяет максимально задействовать декларативный и визуальный подход к разработке. Имеет 2 исполнения: Java Edition и Studio Edition. Первая версия представляет общий функционал разработки, вторая — создание коммерческих приложений.

Android Studio

Описание: профильная среда java разработки на Android. В основе лежит IntelliJ IDEA, оптимизированная под решение конкретных мобильных задач: рефакторинга, сборки, шаблонизации, поиска причин низкой производительности и её увеличения. Рекомендуем посмотреть мастер-класс по созданию клиент-серверного приложения на базе Android.

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

Что нужно знать java разработчику?

Суть такова. Программирую на Java. Знаю и применяю инкапсуляцию, наследование и полиморфизм, работаю с коллекциями, умею работать с графической библиотекой OpenGL, так же созданию приложение с использованием JFrame. Сейчас изучаю Android SDK. В общем вопрос такой.

Что мне ещё мне надо изучить для будущего профессионального программирования? Какие книги вы можете порекомендовать по Java?

P.S. И маленький вопрос: помогут ли мои небольшие проекты на языке java поступить в универ?

  • Вопрос задан более трёх лет назад
  • 4994 просмотра


ВУЗ-ам плевать на ваши достижения, и на то что вы уже до поступления освоили приличный кусок технологий. ВУЗ государственное учреждение, ему плевать на эффективность. Поэтому сомневаюсь что свои проекты как-то помогут, но то что вы их делаете — это очень большой плюс, когда будете искать работу джуном. Лучше уже сейчас их заливайте на GitHub, и ничего что кривые-косые 🙂

10 лучших фреймворков Java для разработчиков

Перевод статьи Клеофаса Мулонго «10 Best Java Frameworks For Software Developers».

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

1. Spring Framework

Spring относится к самым популярным фреймворкам Java. Большинство Java-разработчиков останавливает свой выбор именно на нем. Одна из причин подобной любви – возможность dependency injection.

Spring это идеальный фреймворк для разработки корпоративных приложений и моделей конфигурации на языке Java. Он помогает разработчикам сосредоточиться на бизнес-логике приложения. Spring очень близок к фреймворку Spring Boot.

2. PrimeFaces

PrimeFaces это один из самых легковесных фреймворков Java. Это простой .jar-файл. Поскольку он доступен уже много лет, PriemFaces служит в качестве фреймворка пользовательского интерфейса для JavaServer Faces и Java EE.

PrimeFaces может похвастать более чем 100 компонентами. Среди его ключевых компонентов можно назвать, например, валидацию на стороне клиента и touch mobile kit.

3. Blade

Blade это легковесный MVC-фреймворк на основе Java 8. Когда мы говорим о легковесности Blade, то имеем в виду размер его исходного кода, который не превышает 500KB.

Это простой фреймворк с роутингом интерфейса в стиле RESTful. Он относится к немногим фреймворкам Java, в которых нет invasive interceptors.

Чтобы использовать Blade, вам нужно создать обычный проект Maven. Blade предоставляет поддержку модульности, которая есть в Java 9. Также он поддерживает довольно много веб-компонентов Java.

4. Dropwizard

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

Фреймворк Dropwizard поставляется со многими библиотеками, в числе которых Google Guava, Jetty server, Hibernate Validator, Logback, Joda Time. Также есть библиотека Jackson для обработки JSON-файлов. JSON даст вам возможность сэкономить время на написании кода для единиц измерения и конфигураций. Вместо этого вы сможете направить все свои силы на функционал приложения. Проще говоря, этот фреймворк поможет вам достигнуть максимального уровня эффективности.

Dropwizard поставляется с документацией, дружественной для начинающих, – с ее помощью вам будет легко начать пользоваться этим фреймворком.

5. Google Web Toolkit (GWT)

Как следует из названия, Google Web Toolkit это фреймворк Java, разработанный Google. Он был создан, чтобы помочь разработчикам, желающим строить веб-приложения на Java. Этот фреймворк позволяет пользователям писать код на Java и запускать его в браузерах как JavaScript.

Поскольку это продукт Google, GWT имеет хорошую поддержку команды опытных программистов. Вы можете использовать его для разработки сложного веб-приложения, даже если у вас нет практического опыта в языках программирования фронтенда, таких как JavaScript.

Этот фреймворк имеет уникальный функционал, например, в нем есть UI abstraction, межбраузерная портируемость, интернационализация и booking.

6. JavaServer Faces

Фреймворк JavaServer Faces (JSF) новым не назовешь. Он существует уже 14 лет. Это MVC-фреймворк, упрощающий задачу создания пользовательского интерфейса для веб-приложения. Для этого фреймворк имеет особый функционал. Самое замечательное, что UI-компоненты, созданные с помощью этого фреймворка, могут использоваться повторно для других веб-страниц.

Для шаблонов JavaServer Faces использует Facelets.

7. JHipster

Jhipster принадлежит к числу последних фреймворков Java. Он был выпущен в 2013 году. Jhipster объединяет Spring Boot, Angular и React в один большой фреймворк. С ним вы можете с легкостью построить современное веб-приложение на языке Java.

Spring Boot, встроенный в этот фреймворк, позволит вам разрабатывать приложения на основе фреймворка Spring. Кроме Angular и React, JHipster также содержит Bootstrap. Этот фреймворк позволяет разработчикам выбирать между двумя видами архитектуры: монолитной и микросервисной. В случае монолитной фронтенд и бэкенд встроены в одно приложение, а в случае микросервисной они разделены.

Мастер Йода рекомендует:  Использование сценариев для построения шаблонов HTML-страниц PHP

8. Spark Framework

Фреймворк Spark идеален для программистов, разрабатывающих приложения с использованием языка Java. С его помощью вы можете быстро и легко построить бэкенд для своего сайта. Spark использует возможности Java8 и обладает выразительным API.

9. MyBatis

MyBatis это mapper-фреймворк для программирования на Java. Он упрощает процесс связи вашего Java-приложения с базой данных SQL. Этот фреймворк действует как промежуточное ПО между ними.

Обычно для подсоединения вашего приложения к реляционной базе данных вам понадобится Java Database Connectivity API. MyBatis упрощает процесс. Он дает разработчикам возможность осуществлять основные SQL-операции, используя лишь несколько строк кода.

MyBatis можно сравнить с фреймворком Hibernate. Они оба представляют собой нечто вроде моста между приложением и базой данных. Единственная разница в том что MyBatis не отображает объекты Java в реляционную базу данных.

10. Play Framework

Play это еще один легковесный фреймворк Java, который нравится большинству разработчиков. Он также может использоваться для программирования на Scala.

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

В фреймворке Play есть асинхронные APIs, позволяющие масштабировать приложения без внедрения дополнительных ресурсов. Этот фреймворк предоставляет превосходную поддержку различных паттернов микросервисов.

Заключение

Какой же фреймворк Java выбрать? Однозначного ответа на этот вопрос нет. Все, что нужно, – быть открытым для нового и изучить информацию о разных фреймворках. Сделав это, вы сможете выбрать идеальный вариант для своих нужд.

Применение Java для веб-разработки

Дата публикации: 2020-10-15

От автора: единственные веб-разработчики, которые пользуются уважением у разработчиков программного обеспечения — это те, кто пишет на Java. И это неудивительно, ведь язык в меру сложен и могуществен. Разработчик, досконально знающий Java, без труда осваивает любой другой, легко работает с новыми технологиями и востребован на рынке труда. Сегодня расскажем обо всем, что знаем о Java для веб разработки, не вдаваясь в детали — лишь по существу. Поехали!

История создания

Сегодня трудно представить, что один из ведущих языков для web-разработки был создан для обеспечения работы бытовых устройств. Да-да, сначала нужно было придумать, как настроить кондиционер, а уже после создавать игры вроде Minecraft (полностью написан на Java).

В начале девяностых годов, когда создание веб-сервисов было только впереди, перед компанией Sun стояла задача создать язык, на котором будут работать обычные устройства без особых компьютерных мощностей: холодильники, автомобили, телевизоры, пылесосы и прочее. На самом деле, с этой задачей мог справиться любой из существующих тогда языков (впоследствии они тоже приняли участие в web-разработке). Но от нового programming language (далее PL) ожидали конкретных характеристик.

Во-первых, он не должен был потреблять много ресурсов. Это сегодня компьютер достаточной мощности можно поместить в пульт от телевизора. Но в 1995-ом, когда первые ПК начали появляться у обычных пользователей, такая роскошь была за гранью возможного. В бытовые устройства встраивался небольшой чип. C++ и ему подобные не могли работать на такой платформе.

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

Во-вторых, разработчики не хотели программировать каждое устройство отдельно. Экспорт с разных стран Азии уже был поставлен на промышленные рейки, и систем, на которые нужно было остановить программный код, было более, чем достаточно. Перед командой стояла задача создать возможность, которая впоследствии стала одним из девизов Java: «Напиши раз, выполняй где угодно». Несмотря на то, что сегодня платформ еще больше, он не утратил своей актуальности.

Кофейный логотип и название

Множество web-разработчиков настолько привыкли к эмблеме языка и платформы, что даже не задумываются о ее происхождении. Создателям PL свойственно называть свои детища как-то по-особенному, добавляя языку свои персональные переживания.

Именно так поступил один из разработчиков языка — Джеймс Гослинг. Когда ему поступило указание создать новый язык, он работал в офисе, из окна которого было видно старое дерево — дуб. Поэтому он решил дать языку название Oak, что так и переводится. Возможно, сейчас язык так и назывался бы. Даже звучит неплохо: «Требуется web-разработка на Oak». Но интересы бизнеса здесь сыграли решающую роль. Прежде всего, нужно было имя с хорошим звучанием на разных языках. А во-вторых, язык с названием Дуб тогда тоже набирал популярность (но так и не набрал ). Поэтому коммерсанты решили судьбу Java, дав ему такое название.

Само по себе слово не имеет определенного значения — так называется один из островов. Именно оттуда привозят лучший кофе под маркой острова. Также сорт кофе часто красовался на вендинг-машинах, которые его продавали. А так как Java создавался для подобных устройств, то решение напросилось само собой. К тому же, кофе — один из любимых напитков разработчиков.

JavaScript: побратим или однофамилец?

Между PL Java и JavaScript действительно есть общие черты. Например, это два объектно-ориентированных языка. Реализованные продукты являют собой совокупность объектов, которые отнесены к конкретному классу. В свою очередь, классами обусловлена иерархия наследования. К примеру, существуют также агентно-ориентированные, компонентно-ориентированные и прототипно-ориентированные языки. Еще одной общей чертой являются похожие названия. И оба языка используются в web-разработке. На этом все.

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

Интересно знать, что даже небольшие игры можно писать на «скриптах»: можете с ними ознакомиться в Интернете. JS был изначально создан для web-разработки и сегодня активно используется в различных продуктах. Все не ограничивается клиентской стороной: на JavaScript активно пишут серверные веб-приложения.

Но связь с Java у него все же есть. Дело в том, что изначально «сценарии» назывались LiveScript и не имели никакого отношения к уже известному в то время языку. Но веб-сервисы тогда еще не были популярны, как в целом web-разработка, потому создатели скриптов решили предпринять коммерческий ход: дать частичку названия от уже популярного языка. Теперь мозг программиста невольно вспоминает о JavaScript, когда речь идет о Java.

Подобным путем пошла и компания Microsoft. Когда они увидели успех JavaScript, то создали свой аналог — Jscript. Как всегда, решающую роль сыграла стратегия компании: Embrace, extend and extinguish. Но в этот раз не получилось .

Стремительная карьера в веб

Легенды гласят, что перед тем как Java стал одним из самых популярных в мире языков программирования, один из создателей, Патрик Нортон, пролетел в сумме более 300 000 миль, в надежде, что такую глобальную разработку кто-то купит. Но рынок PL был достаточно наполнен для того времени. Продуктом мало кто интересовался, несмотря на то, насколько технологии были оценены впоследствии.

Благо, коммерческая жилка Патрика Нортона помогла ему понять, где лучше всего может быть реализован язык программирования. Во первой половине девяностых Интернет уже стал основным инструментом профессионалов и средством развлечения любителей. Но сама по себе сеть WWW не работает: ей нужна программа, превращающая гипертекст в страницу. И хотя сегодня Java не так уж часто ассоциируют с web-разработкой, именно она положила начало мании на PL Java.

В то время браузер для Интернета, по сути, был один — Mosaic. Он был создан, как дипломный проект Марка Андерсена в Университете Иллинойса. Долгое время был популярен: IE до седьмой версии использует код Мозаики, как основу. В свою очередь, создатели Java решились на браузер, полностью написанный на их языке, чтобы продемонстрировать всю мощь. На презентации компании Sun браузер сделал свое дело: популярность, которая возникла в тот день, не прекращается до сих пор. Фурор произвели апплеты — небольшие программы внутри самой программы, которые позволяют оптимизировать отдельные функции.

Java в решениях для web

Иногда конкуренция, которую составляют другие компании, неплохо сказывается на предприятии. Именно так случилось с Java. Изначально его применение в web-разработке было нацелено строго на создание апплетов. Они выполнялись прямо в двоичном коде Java, потому работали быстро, тем самым ускоряя различные веб-сервисы. И если бы не конкуренция от таких технологий, как flash, развитие платформ Java на этом могло бы и остановиться.

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

Но так не случилось: конкурирующие компании представили массу иных решений, которые заставили Java вести разработку в новом направлении. В 1997 компания Sun начала работу над технологией под названием Java Server Pages, которая стала основой web-разработки на Java вплоть до наших дней. JSP это страницы, на которых разработчик может размещать как динамические, так и статические компоненты. Мы уже говорили об этом, когда рассматривали возможности PHP.

Но JSP в web-разработке всегда работает в паре с сервлетом. Это такой интерфейс Java, благодаря которому возможности сервера расширяются. Несмотря на то, что сам по себе сервлет может обслуживать любой запрос в системе вопрос-ответ, история распорядилась так, что он используется для апгрейда веб-серверов. Код от JSP переносится в код сервлета с помощью специального компилятора с созвучным названием — Jasper. Ну а все содержимое вместе управляется с помощью еще одной технологии, которая принесла Java популярность.

Java Platform Enterprise Edition берет свое начало еще с 1997, вместе с началом web-разработки на Java в целом. Это набор различных технологий для создания полномасштабных веб-сервисов. Именно благодаря ей язык закрепился в мире web-разработок прочно и надолго. Используется в больших проектах крупных компаний, а не в простых пользовательских игрушках, которые легко создаются на PHP. Здесь важна надежность, работа с ошибками системы, возможность масштабирования и высокая производительность. Для малобюджетных компаний — бесплатная версия. Компания Oracle, которой теперь принадлежит Java, выпускает поддерживаемый SDK.

Если вы новичок, и все, что было сказано выше, для вас terra incognita, значит, вам стоит хотя бы изучить HTML — основу построения всех веб-страниц, чтобы впоследствии оптимизировать их с помощью Java. Кстати, из-за тесного взаимодействия этих двух технологий PL Java очень часто называют логическим продолжением HTML. Но в свете того, что вы уже знаете о языке и о том, какую роль он изначально играл в web-разработке, становится понятно, что с «гипертекстом» у Java мало общего.

Популярность среди интернет-разработчиков

Зная историю создания языка, невольно удивляешься: «Что вообще этот язык делает в web-разработке?». На этот вопрос есть сразу несколько ответов:

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

Да и что еще программировать человеку, который знает Java в 2020 году? Конечно же, нужно заняться web-разработкой;

кроссплатформенная свобода. Мы уже упоминали девиз языка немного выше. И правда, Java запускается на всех (почти) устройствах, у которых достаточно оперативной и физической памяти. Чтобы писать на Java, вам нужен девайс с ОЗУ/RAM 64 MB;

смартфоны захватили планету. Частично — благодаря Java. Достаньте ваш телефон из кармана и, если там установлен Android, поблагодарите за это Нортона и Гослинга — гениев, которые создали язык. Несмотря на то, что изначально iOS работал лучше, сегодня по популярности и качеству приложения явно отстают. Из-за того, что нативный софт в Android работает на Java, веб-сервисы тоже лучше создавать на нем;

знаешь Java — получаешь билет в жизнь. Несомненно, громкое высказывание, но оно справедливо. Однозначно, web-разработка — это круто. Но ничто не сравнится с той крутизной, которую предлагает Java. От создания решений для веба до полетов в космос. Ни один язык программирования не даст вам такого диапазона возможностей.

Java на рынке труда

Это раздел можно считать дополнением к последнему пункту: мы поговорим о возможностях Джавистов (да, звучит, как Джедаев ). Правда в том, что они и правда востребованы рынком более, чем когда-либо. Прогрессивные ребята, которые работают на Ruby, Python и С-семействах, обычно шутят: «Может, все-таки поищешь работу в Web 1.0?». Но, как правило, все до того момента, как видят инфографику с вакансиями.

Java до сих пор актуален, так как используется в разработке мобильных приложений, веб-сервисов, программного обеспечения, Big Data и для бизнесовых процессов (язык активно используют гиганты, вроде Goldman Sachs).

Конкуренты не спят

Изначально основным противником Java должен был стать C#. Он и стал, если анализировать список востребованных профессий. Но сконцентрированность на одной платформе работает на благо только в компании Apple (одному Богу известно, как у них это получается). В целом же, C#, хоть и имеет высокие позиции в программировании, не очень хорошо подходит для web-разработки.

Намного более полезен в этом случае Python. Этот язык начал стремительное развитие несколько лет назад и нашел себя в web-разработке лучше многих. Но и здесь у Java есть сильные стороны. Да, создавать на Питоне проще и быстрее. Но если вам нужно качество и стабильность, трудно придумать что-то лучше, чем Java. Кстати, говорят, что зрелому Джависту не помешает практика на Python — это заставляет упрощать код, который вы писали ранее.

Существует и масса критики, которую льют на этот PL. Но, как правило, этого не делает ни один человек, который знает его досконально. Если вы хотите быть серьезным web-разработчиком, создавать мощные продукты, то не ищите легких путей и, конечно же:

Используйте динамические языки динамично: Часть 1. Введение в Java scripting API (исходники)


Java-разработчики знают, что Java не всегда является лучшим языком для решения некоторого рода задач. В этом году релизы версий 1.0 для JRuby и Groovy усилили интерес к встраиванию динамических языков в приложения Java. Groovy, JRuby, Rhino, Jython и прочие проекты с открытым кодом предоставляют возможность писать код на так называемых скриптовых языках и запускать его под управлением JVM. До сих пор интеграция таких языков с Java-кодом, обычно, подразумевала необходимость изучения для каждого интерпретатора его уникального API и особенностей реализации.

Пакет javax.script , добавленный в Java SE 6, облегчает процесс интеграции динамических языков. Он предоставляет единообразный, простой способ вызова множества скриптовых языков при использовании небольшого набора интерфейсов и реальных классов. Но Java scripting API — это больше, чем просто облегчение в создании скриптовых фрагментов приложения; пакет поддержки скриптинга позволяет вам считывать и вызывать внешние скрипты на лету, что означает возможность динамической модификации самих скриптов для изменения поведения исполняемого приложения.

Эта статья, первая в серии из двух частей, является введением в возможности и ключевые классы Java scripting API с использованием приложения в стиле «Hello World». Часть 2 представляет более реалистичный пример приложения, раскрывающий дополнительные сильные стороны скриптового API. В этом приложении scripting API задействован для создания движка с динамически настраиваемыми правилами, в котором правила кодируются в виде внешних скриптов, написанных на Groovy, JavaScript и Ruby. Правила принимают решение — может ли соискатель внутреннего заема претендовать на отдельные ипотечные продукты. Воплощение таких правил посредством Java scripting API позволяет изменять сами правила и добавлять в процессе выполнения новые продукты ипотеки.

Термин скриптовый обычно относится к языкам, запускаемым в интерпретирующей оболочке без выделения этапа копмиляции. Термин динамический , как правило, относится к языкам, ожидающим момента, когда среда выполнения определит тип переменной или поведение объекта и содержащим возможности на подобие замыканий ( closures ) и продлений ( continuations ). Некоторым языкам программирования общего назначения подходят оба термина. Предпочтение термину скриптовый язык здесь отдано по той причине, что эта статья сфокусирована на Java Scripting API, а не потому что упоминающимся языкам не достает динамических характеристик.

Пакет поддержки скриптинга был добавлен в язык Java в декабре 2006 для обеспечения унифицированного способа интеграции скриптовых языков в приложение Java. Для разработчиков языков пакет предоставляет способ написания связующего кода, позволяющего их языкам вызываться динамически из Java-приложения. Для Java-разработчиков пакет предлагает небольшой набор классов и интерфейсов, которые дают возможность скриптам, написанным на любом множестве языков, быть вызванным через обобщенный API. Пакет скриптинга, таким образом, подобен пакету Java Database Connectivity (JDBC) — с ним различные языки (как различные базы данных) могут быть интегрированы в платформу Java посредством согласующего интерфейса.

Ранее динамический вызов скриптового языка из Java-кода усложнялся использованием специфичных классов, поставляемых в дистрибутиве каждого языка, или же использованием Bean Scripting Framework (BSF) от Apache Jakarta. BSF объединяет небольшое количество скриптовых языков под управлением единого API. Более двух дюжин скриптовых языков, включая AppleScript, Groovy, JavaScript, Jelly, PHP, Python, Ruby и Velocity, могут быть интегрированы в Java-код при использовании Java SE 6 Scripting API, главным образом базирующемся на BSF.

Scripting API обеспечивает двухстороннюю видимость между Java-приложениями и внешними скриптами. Ваш Java-код может не только вызывать внешние скрипты, но также может предоставить таким скриптам доступ к избранным Java-объектам. Внешний скрипт Ruby, к примеру, может вызывать методы Java-объектов и иметь доступ к их свойствам, что позволяет скриптам добавлять в исполняемое приложение поведение, не предусмотренное на момент разработки.

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

  • Написание бизнес-логики на более простом, чем Java, языке, не обращаясь при этом к развитым средам выполнения.
  • Построение архитектуры на базе подключаемых модулей (плагинов), позволяющей пользователям настраивать приложение на лету.
  • Интегрировать существующий скрипт в ваше Java-приложение, скажем, скрипт обрабатывающий или преобразовывающий текстовые файлы.
  • Производить внешнюю оперативную конфигурацию поведения приложения с помощью полноценного языка программирования вместо настроечного файла.
  • Добавлять в Java-приложение язык, специфичный для данной предметной области.
  • Применять скриптовый язык на этапе прототипирования Java-приложения.
  • Писать на скриптовом языке тестирующий код для приложения.

Класс HelloScriptingWorld , который вы можете загрузить наряду с прочим кодом для этой статьи (см. Файлы для загрузки), демонстрирует ключевые возможности пакета поддержки Java-скриптинга. В нем используются жестко закодированные фрагменты на JavaScript, взятого в качестве примера скриптового языка. Содержащийся в классе метод main() , показанный в листинге 1, создает исполняющее окружение для JavaScript скрипта, а затем вызывает пять методов (показанных в последующих листингах), подчеркивающих возможности пакета:

Главная задача метода main() — получение экземпляра javax.script.ScriptEngine (две первых конструкции в листинге 1). Скриптовый движок загружает и выполняет скрипты для некоторого конкретного языка. Это наиболее часто используемый и востребованный класс в пакете Java-скриптинга. Вы извлекаете скриптовый движок из javax.script.ScriptEngineManager (первое выражение присваивания). Типичная необходимость — получение в программе только одного экземпляра движка, если только не используется множество скриптовых языков.

ScriptEngineManager , возможно, единственный реальный класс в пакете скриптинга к которому вы будете обращаться регулярно; большинство прочего — интерфейсы. И это, может быть, единственный класс из пакета скриптинга, экземпляры которого вы будете создавать напрямую (или косвенно — через механизм внедрения зависимости ( dependency-injection) так, как это делается в Spring Framework.) ScriptEngineManager может возвращать скриптовый движок одним из трех способов:

  • По имени движка или языка, как запрашивается JavaScript в листинге 1.
  • По расширению файла, общепринятому в использовании для скриптов на этом языке, скажем, .rb для Ruby.
  • По MIME-типу, в случае, когда в скриптовом движке заявлена его поддержка.

В нашем примере Hello World мы используем JavaScript отчасти потому что его код прост для понимания, но в большей степени — потому что среды выполнения для Java 6 в поставке от Sun Microsystems и BEA Systems комплектуются JavaScript-интерпретатором на базе реализации с открытым кодом Mozilla Rhino. Для JavaScript у вас нет необходимости добавлять JAR-файлы поддержки скриптового языка в переменную окружения CLASSPATH .

ScriptEngineManager -ы находят и создают скриптовые движки опосредованно. Т.е. при создании экземпляров ScriptEngine-менеджеров они обращаются к механизму поиска сервиса (добавлено в Java 6) для обнаружения всех зарегистрированных реализаций javax.script.ScriptEngineFactory в CLASSPATH Эти фабричные классы поставляются в пакетах с реализациями Java scripting API; вам, скорее всего, никогда не придется непосредственно иметь дело с этими классами.

После того, как ScriptEngineManager нашел все фабричные классы соответствующих скриптовых движков, он опрашивает каждую из фабрик чтобы выяснить: можно ли создать движок требуемого типа — JavaScript для случая в листинге 1. Если фабрика отвечает утвердительно, менеджер просит фабрику создать движок и он будет возвращен потребителю. Менеджер возвращает null если фабрика для целевого языка не найдена, что предусмотрено в коде листинга 1, в целях надежности проверяющем возвращаемое значение на null .

Как я уже упоминал, ваш код использует экземпляр ScriptEngine для выполнения скрипта. Скриптовый движок действует как посредник между вашим скриптовым кодом и целевым языковым интерпретатором или компилятором, который, в конечном счете, и исполняет код. Следовательно, вам не нужно знать какие классы используются каждым интерпретатором для отработки кода. Например, скриптовый движок для JRuby может сначала передать ваш код в экземпляр класса org.jruby.Ruby для компиляции скрипта в некоторую промежуточную форму, затем вызвать его снова для прогона скрипта и обработки возвращаемых значений. Реализация скриптовой поддержки скрывает детали, включая то, как интерпретатор согласовывает определения классов, объекты приложения и потоки ввода/вывода с Java-кодом.

На рис. 1 в общем виде показаны взаимосвязи между вашим приложением, Java scripting API, реализацией ScriptEngine и интерпретатором скриптового языка. Вы можете отметить, что ваше приложение опирается только на API скриптинга, предоставляемое классом ScriptEngineManager и интерфейсом ScriptEngine . Компонент реализации интерфейса ScriptEngine обслуживает всю специфику использования конкретного языкового интерпретатора.

Вас, надо полагать, заинтересует вопрос где же взять необходимые JAR-файлы, имплементирующие скриптовый движок и языковый интерпретатор. Наилучшим местом для поиска реализации движка является, прежде всего, проект с открытым кодом Scripting, поддерживаемый java.net (см. Ресурсы). Здесь вы найдете реализации скриптовых движков для многих языков и ссылки на прочие ресурсы по теме. Проект Scripting также предоставляет ссылки для загрузки интерпретаторов поддерживаемых скриптовых языков.

В листинге 1 метод main() передает ScriptEngine в каждый метод для отработки соответствующего JavaScript-кода. Первый метод приведен в листинге 2. Метод invokeHelloScript() вызывает на стороне движка метод eval для вычисления и выполнения переданной строки кода на JavaScript. Интерфейс ScriptEngine определяет шесть перегруженных методов eval() , принимающих скрипт к обработке как в виде строки, так и через объект java.io.Reader , широко используемый для вычитывания скриптов из внешних источников, таких как файлы.

Пример скрипта в приложении HelloScriptingWorld осуществляет вывод в консоль используя JavaScript-функцию println() , но у вас есть полный контроль над потоками ввода и вывода. Скриптовые движки предоставляют опцию для изменения контекста выполнения скрипта, т.е. вы можете переназначать потоки, закрепленные за standard input, standard output и standard error, а также определять — какие глобальные переменные и объекты Java доступны выполняемому скрипту.

JavaScript в методе invokeHelloScript() выводит Hello from JavaScript в поток стандартного вывода (standard output), являющийся, в данном случае, консольным окном. (листинг 6 содержит окончательный вывод после запуска HelloScriptingWorldApplication .)

Обратите внимание — этот и другие методы класса декларируют, что они выбрасывают исключение javax.script.ScriptException . Это проверяемое исключение — единственное, определенное в пакете скриптинга — указывает на то, что движок потерпел неудачу при синтаксическом разборе или выполнении кода. Все методы eval() скриптового движка выбрасывают ScriptException , поэтому в коде вам необходимо соответствующим образом обработать эту ситуацию.

В листинге 3 показаны два связанных метода: defineScriptFunction() и invokeScriptFunctionFromEngine() . Метод defineScriptFunction() также вызывает на движке метод eval() с явно заданным фрагментом JavaScript-кода. Однако отметьте — этот метод всего лишь задает определение JavaScript-функции sayHello() . Выполнения кода не происходит. Функция sayHello() принимает один параметр, который затем выводится в консоль следующим далее вызовом println() . JavaScript-интерпретатор скриптового движка добавляет эту функцию в свое глобальное окружение, делая ее доступной в последующих вызовах eval , что происходит (и это не удивительно) в методе invokeScriptFunctionFromEngine() .

Эта пара методов демонстрирует, что скриптовые движки могут сохранять состояние компонентов приложения и делать это состояние доступным на протяжении последующих вызовов методов eval() . Метод invokeScriptFunctionFromEngine() использует преимущество, предоставленное сохраненным состоянием и вызывает JavaScript-функцию, определенную в предыдущем вызове eval() .

Итак, многие скриптовые движки сохраняют состояние глобальных переменных и функций между вызовами eval() . Однако, и это важно учитывать, Java Scripting API не требует от движков поддержки такой возможности. Скриптовые движки JavaScript, Groovy и JRuby, используемые в этой статье, обеспечивают сохранность состояния между вызовами eval() .

Листинг 4 является вариацией предыдущего примера. Метод invokeScriptFunctionFromJava() отличается тем, что вызывает JavaScript-функцию sayHello() не прибегая к методу eval() , принадлежащему ScriptEngine или к JavaScript-коду. Вместо этого он использует интерфейс javax.script.Invocable из состава Java Scripting API для вызова функции, поддерживаемой скриптовым движком. Метод invokeScriptFunctionFromJava() приводит объект скриптового движка к интерфейсному типу Invocable , а затем обращается к интерфейсному методу invokeFunction() для вызова JavaScript-функции sayHello() с заданным параметром. Если вызываемая функция возвращает значение, метод invokeFunction() вернет его, упаковав в Java-тип Object .

Если скриптовая функция или метод реализуют Java-интерфейс — доступно более развитое использование Invocable . Интерфейс Invocable определяет метод getInterface() , принимающий в качестве параметра интерфейс и возвращающий прокси-объект Java, реализующий этот предоставленный ранее интерфейс. Как только вы получили прокси-объект из скриптового движка, вы можете рассматривать его как обыкновенный Java-объект. Вызываемые на прокси методы делегируются в скриптовый движок для выполнения скриптовым языком.

Отметьте также, что листинг 4 не содержит JavaScript. Интерфейс Invocable позволяет Java-коду вызывать скриптовую функцию не зная языка ее реализации. Метод invokeFunction() выбрасывает java.lang.NoSuchMethodException если скриптовый движок не смог найти функцию с данным именем или типом параметров.

Java Scripting API не требует от скриптового движка имплементации интерфейса Invocable . На самом деле, код в листинге 4 должен был бы перед приведением типа задействовать оператор instanceof , чтобы убедиться в том, что движок реализует интерфейс Invocable .

Примеры в листинге 3 и листинге 4 показывают как Java-код может вызывать функции или методы, определенные в скриптовом языке. Теперь же вас, вероятно, заинтересует — может ли код скриптового языка, в свою очередь, вызывать методы Java-объектов. Может. Метод invokeJavaFromScriptFunction() в листинге 5 показывает — как получить доступ к Java-объектам со стороны скриптового движка и как скриптовый код может вызывать методы этих Java-объектов. В частности, метод invokeJavaFromScriptFunction() использует предоставляемый движком метод put() для передачи экземпляра того же класса HelloScriptingWorld в движок. После того, как движок получил доступ к Java-объекту через имя, переданное при вызове put() , скриптовый код вызовом метода eval() использует его.

JavaScript-код, содержащийся в вызове метода eval() из листинга 5 использует Java-объект HelloScriptingWorld посредством доступа к нему через переменную с именем helloScriptingWorld , переданным в вызов метода put() на стороне скриптового движка. Вторая строка JavaScript-кода вызывает публичный Java-метод getHelloReply() , также приведенный в листинге 5. Метод getHelloReply() возвращает строку Java-метод getHelloReply говорит ‘Привет, ‘ . Код JavaScript в методе eval() присваивает возвращаемое из Java значение переменной msg , затем выводит это значение в консоль.

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

ScriptEngine.put и связанный с ним метод get() являются основными способами распределения доступа к объектам и данным между Java-кодом и выполняемыми движком скриптами. (Расширенное обсуждение этой темы см. ниже в Область видимости исполняемого скрипта.) Когда вы вызываете на движке метод put() , скриптовый движок ассоциирует второй параметр (произвольный Java-объект) с заданным строковым ключем. Большинство скриптовых движков обеспечивают доступность этих Java-объектов в скриптах посредством заданного имени переменной. Движки вольны в обращении с передаваемыми вами в метод put() именами. Например, скриптовый движок JRuby делает helloScriptingWorld доступной в Ruby-коде в виде глобальной переменной $helloScriptingWorld , что соответствует синтаксису Ruby для глобальных переменных.

Метод get() движка извлекает значения, доступные в скриптовом окружении. В общем случае, каждая глобальная переменная и функция из окружения доступны в Java-коде через метод get() . Но для скриптов доступны только те объекты Java, которые заявлены скриптовому движку непосредственно — вызовом put() .

Такая возможность доступа и манипулирования Java-объектами в исполняемом приложении со стороны внешних скриптов является мощной техникой расширения функциональности ваших Java-программ. (Эта техника задействована в примере из Части 2)

Вы можете запустить приложение HelloScriptingWorld загрузив и скомпоновав исходный код. zip-файл содержит компоновочные сценарии как для Ant так и для Maven, чтобы облегчить компиляцию и запуск примера приложения. Выполните следующие шаги:

  1. Скачайте zip-архив.
  2. Создайте новый каталог, скажем, java-scripting и распакуйте сюда полученный на предыдущем шаге архив.
  3. Откройте командное окно и перейдите в этот каталог.
  4. Запустите ant run-hello .

Вы должны увидеть консольный вывод из Ant, сходный с приведенным в листинге 6. Обратите внимание на то, что метод defineScriptFunction() не генерирует вывода, т.к. он определяет, но не вызывает JavaScript-функцию.

Java Scripting API появился в Java SE 6, но вы также можете использовать его и с Java SE 5. Вам всего лишь необходимо предоставить реализацию недостающих классов из пакета javax.script . К счастью, реализация доступна из Java Specification Request 223 reference implementation. JSR 223 определяет Java scripting API.

Если вы загрузите ссылочную реализацию JSR 223, распакуйте архив и поместите файлы script-api.jar, script-js.jar и js.jar в месте, доступном по classpath. Эти файлы из комплекта поставки Java SE 6 воплощают скриптовый API, интерфейс скриптового движка JavaScript и сам скриптовый движок JavaScript.

За тем, как вы передаете Java-объекты в исполняемые движком скрипты, стоит более развитая реализация, чем просто вызов движковых методов get() и put() . Когда вы вызываете get() или put() на движке, он извлекает или сохраняет требуемый ключ в специально предусмотренном экземпляре интерфейса javax.script.Bindings . (Интерфейс Bindings это просто интерфейс Map , обслуживающий строковые ключи.)

Когда ваш код вызывает движковый метод eval() , на стороне движка используется предопределенное связывание ключей со значениями. Однако, вы можете предоставить свой собственный объект Bindings для обслуживания вызовов eval() , чтобы ограничить видимость переменных и объектов для данного скрипта. Тогда вызов будет выглядеть как eval(String, Bindings) или eval(Reader, Bindings) . Чтобы облегчить создание ваших специфичных Bindings , скриптовые движки предлагают метод createBindings() , возвращающий пустой объект Bindings . Вызов eval на объекте Bindings временно скрывает Java-объекты, сохраненные ранее с использованием предопределенного в движке связывания.

Для накопления истории скриптовый движок имеет в своем составе два предопределенных механизма связывания: связывания с областью видимости на уровне движка ( engine scope bindings ) используются при вызовах get() и put() , а связывания с глобальной областью видимости ( global scope bindings ) движок может применять для поиска объектов в случае, если их не удалось обнаружить на уровне связывания «engine scope». Формулировка может — существенна. Скриптовые движки не обязаны обеспечивать доступность глобального связывания для скриптов. Хотя многие скриптовые движки такой доступ предоставляют.

Конструктивное назначение «global scope»-связывания — совместное использование объектов различными скриптовыми движками. Каждый движок, возвращаемый экземпляром ScriptEngineManager , комплектуется одним и тем же объектом глобального связывания. Вы можете извлечь этот объект вызовом метода getBindings(ScriptContext.GLOBAL_SCOPE) и назначить объект глобального связывания для движка с помощью setBindings(Bindings, ScriptContext.GLOBAL_SCOPE) .

ScriptContext — это интерфейс, который определяет и управляет контекстом времени исполнения скриптового движка. ScriptContext содержит связывания с «движковой» и «глобальной» областями видимости, а также потоки ввода/вывода, используемые движком для стандартных операций ввода/вывода. Вы можете получить контекст скриптового движка и манипулировать им с помощью движкового метода getContext() .

Концепции Scripting API, такие как область видимости scope , связывания bindings и контекст могут, поначалу, сбивать с толку, по причине своих частично перекрывающихся смыслов. Загрузочный файл с исходными кодами для этой статьи включает тестовый файл JUnit, называющийся ScriptApiRhinoTest и расположенный в каталоге src/test/java. Содержащийся там Java-код призван помочь вам разобраться с этими концепциями.

Теперь, когда вы располагаете базовыми знаниями по Java Scripting API, Часть 2 этой статьи улучшит и расширит эти знания при помощи более реалистичного примера приложения. Это приложение использует комбинацию внешних скриптовых файлов, написанных на Groovy, Ruby и JavaScript для задания бизнес-логики с возможностью ее оперативного изменения. Как вы увидите, определение бизнес-правил в скриптовом языке облегчает написание этих правил и, возможно, упрощает восприятие при чтении непрограммистами, такими как бизнес-аналитики или специалисты по описанию предметной области.

GUI на Java

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

Abstract Window Toolkit

Хакер #183. Малварь для Android

AWT была первой попыткой Sun создать графический интерфейс для Java. Они пошли легким путем и просто сделали прослойку на Java, которая вызывает методы из библиотек, написанных на С. Библиотечные методы создают и используют графические компоненты операционной среды. С одной стороны, это хорошо, так как программа на Java похожа на остальные программы в рамках данной ОС. Но с другой стороны, нет никакой гарантии, что различия в размерах компонентов и шрифтах не испортят внешний вид программы при запуске ее на другой платформе. Кроме того, чтобы обеспечить мультиплатформенность, пришлось унифицировать интерфейсы вызовов компонентов, из-за чего их функциональность получилась немного урезанной. Да и набор компонентов получился довольно небольшой. К примеру, в AWT нет таблиц, а в кнопках не поддерживается отображение иконок.

Использованные ресурсы AWT старается освобождать автоматически. Это немного усложняет архитектуру и влияет на производительность. Освоить AWT довольно просто, но написать что-то сложное будет несколько затруднительно. Сейчас ее используют разве что для апплетов.

Достоинства:

  • часть JDK;
  • скорость работы;
  • графические компоненты похожи на стандартные.

Недостатки:

  • использование нативных компонентов налагает ограничения на использование их свойств. Некоторые компоненты могут вообще не работать на «неродных» платформах;
  • некоторые свойства, такие как иконки и всплывающие подсказки, в AWT вообще отсутствуют;
  • стандартных компонентов AWT очень немного, программисту приходится реализовывать много кастомных;
  • программа выглядит по-разному на разных платформах (может быть кривоватой).

заключение:

В настоящее время AWT используется крайне редко — в основном в старых проектах и апплетах. Oracle припрятал обучалки и всячески поощряет переход на Swing. Оно и понятно, прямой доступ к компонентам оси может стать серьезной дырой в безопасности.

Swing

Как выглядит Swing

Вслед за AWT Sun разработала набор графических компонентов под названием Swing. Компоненты Swing полностью написаны на Java. Для отрисовки используется 2D, что принесло с собой сразу несколько преимуществ. Набор стандартных компонентов значительно превосходит AWT по разнообразию и функциональности. Стало легко создавать новые компоненты, наследуясь от существующих и рисуя все, что душе угодно. Стала возможной поддержка различных стилей и скинов. Вместе с тем скорость работы первых версий Swing оставляла желать лучшего. Некорректно написанная программа и вовсе могла повесить винду намертво.

Тем не менее благодаря простоте использования, богатой документации и гибкости компонентов Swing стал, пожалуй, самым популярным графическим фреймворком в Java. На его базе появилось много расширений, таких как SwingX, JGoodies, которые значительно упрощают создание сложных пользовательских интерфейсов. Практически все популярные среды программирования Java включают графические редакторы для Swing-форм. Поэтому разобраться и начать использовать Swing не составит особого труда.

Достоинства:

  • часть JDK, не нужно ставить дополнительных библиотек;
  • по Swing гораздо больше книжек и ответов на форумах. Все проблемы, особенно у начинающих, гуглу досконально известны;
  • встроенный редактор форм почти во всех средах разработки;
  • на базе свинга есть много расширений типа SwingX;
  • поддержка различных стилей (Look and feel).

Недостатки:

  • окно с множеством компонентов начинает подтормаживать;
  • работа с менеджерами компоновки может стать настоящим кошмаром в сложных интерфейсах.

Заключение:

Swing жил, Swing жив, Swing будет жить. Хотя Oracle и старается продвигать JavaFX, на сегодняшний день Swing остается самым популярным фреймворком для создания пользовательских интерфейсов на Java.

Standard Widget Toolkit

SWT был разработан в компании IBM в те времена, когда Swing еще был медленным, и сделано это было в основном для продвижения среды программирования Eclipse. SWT, как и AWT, использует компоненты операционной системы, но для каждой платформы у него созданы свои интерфейсы взаимодействия. Так что для каждой новой системы тебе придется поставлять отдельную JAR-библиотеку с подходящей версией SWT. Это позволило более полно использовать существующие функции компонентов на каждой оси. Недостающие функции и компоненты были реализованы с помощью 2D, как в Swing. У SWT есть много приверженцев, но, положа руку на сердце, нельзя не согласиться, что получилось не так все просто, как хотелось бы. Новичку придется затратить на изучение SWT намного больше времени, чем на знакомство с тем же Swing. Кроме того, SWT возлагает задачу освобождения ресурсов на программиста, в связи с чем ему нужно быть особенно внимательным при написании кода, чтобы случайное исключение не привело к утечкам памяти.

Достоинства:

  • использует компоненты операционной системы — скорость выше;
  • Eclipse предоставляет визуальный редактор форм;
  • обширная документация и множество примеров;
  • возможно использование AWT- и Swing-компонентов.

Недостатки:

  • для каждой платформы необходимо поставлять отдельную библиотеку;
  • нужно все время следить за использованием ресурсов и вовремя их освобождать;
  • сложная архитектура, навевающая суицидальные мысли после тщетных попыток реализовать кастомный интерфейс.

Заключение:


Видно, что в IBM старались. Но получилось уж очень на любителя…

JavaFX

Как выглядит JavaFX

JavaFX можно без преувеличения назвать прорывом. Для отрисовки используется графический конвейер, что значительно ускоряет работу приложения. Набор встроенных компонентов обширен, есть даже отдельные компоненты для отрисовки графиков. Реализована поддержка мультимедийного контента, множества эффектов отображения, анимации и даже мультитач. Внешний вид всех компонентов можно легко изменить с помощью CSS-стилей. И самое прекрасное — в JavaFX входит набор утилит, которые позволяют сделать родной инсталлятор для самых популярных платформ: exe или msi для Windows, deb или rpm для Linux, dmg для Mac. На сайте Oracle можно найти подробную документацию и огромное количество готовых примеров. Это превращает программирование с JavaFX в легкое и приятное занятие.

Достоинства:

  • быстрая работа за счет графического конвейера;
  • множество различных компонентов;
  • поддержка стилей;
  • утилиты для создания установщика программы;
  • приложение можно запускать как десктопное и в браузере как часть страницы.

Недостатки:

  • фреймворк еще разрабатывается, поэтому случаются и падения и некоторые глюки;
  • JavaFX пока не получил широкого распространения.

Заключение:

Хорошая работа, Oracle. Фреймворк оставляет только позитивные впечатления. Разобраться несложно, методы и интерфейсы выглядят логичными. Хочется пользоваться снова и снова!

Визуальные библиотеки на практике

SWT: погодный виджет

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

И начнем, пожалуй, с самого популярного виджета — отображения текущей погоды, для реализации которого выберем SWT.

Любая программа на SWT начинается с создания объекта Display. Он служит своеобразным контекстом приложения, который содержит необходимые методы для обращения к ресурсам системы и обеспечивает цикл событий. Следующим шагом будет создание не менее важного объекта Shell. Shell представляет собой обычное окно операционной системы. В конструктор shell передается Display, чтобы создать окно верхнего уровня.

Так как мы создаем виджет, нам не нужно отображать стандартное обрамление окна и кнопки управления, для этого мы указали флаг NO_TRIM. Для фона мы будем использовать картинку — прямоугольник с закругленными углами. В принципе, окно SWT может принимать любые формы. Чтобы добиться такого эффекта, используем класс Region. Все, что нужно, — добавить в этот класс все видимые точки из картинки фона, пропуская прозрачные.

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

Устанавливаем форму окна:

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

Итак, по нажатию на клавишу Esc окно закроется. При нажатии левой клавиши мыши на области окна запомним координаты нажатия. При движении мыши с зажатой левой клавишей — передвигаем окно на экране соответственно движению. При событии перерисовки — рисуем картинку фона, используя графический контекст GC.

Назначим слушатель соответствующим событиям окна:

Устанавливаем размер окна равным размеру изображения:

Открываем окно и запускаем цикл событий:

Не забываем в конце освободить использованные ресурсы:

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

Настало время добавить содержания. Будем отображать текущую погоду в виде иконки состояния (солнечно, дождь, снег…), показаний температуры и времени последнего обновления.

Для расположения графических компонентов в окне в нужном виде используются менеджеры компоновки. Менеджер компоновки занимается не только расположением компонентов, но и изменением их размеров при изменении размеров окна. Для нашего виджета будем использовать GridLayout. Этот менеджер располагает компоненты в ячейках воображаемой таблицы. Создаем GridBagLayout на две колонки с различной шириной колонок (флаг false в конструкторе), устанавливаем его в качестве менеджера компоновки окна:

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

Флаги в классе GridData означают, что метка будет располагаться слева вверху, будет растягиваться горизонтально и вертикально (флаги, установленные в true) при наличии свободного места и занимает одну строку и один столбец таблицы компоновки.

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

В конце программы этот объект также необходимо очистить, вызвав метод dispose. Устанавливаем цвет фона и картинку статуса, которую можно загрузить из файла точно так же, как мы загрузили картинку фона вначале:

Теперь добавим Label с текущей температурой и расположим его в правой верхней части окна:

Установим какую-нибудь температуру:

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

Шрифт по умолчанию для текстовых меток слишком маленький. Так что создадим новый, побольше:

FontData[] fD = temperatureLabel.getFont().getFontData(); fD[0].setHeight(30); fD[0].setStyle(SWT.BOLD); Font newFont = new Font(display, fD[0]); temperatureLabel.setFont(newFont); Шрифт, как и другие ресурсные объекты, нужно освобождать. Для этого воспользуемся слушателем события разрушения метки:

Наконец, добавим метку с описанием погодных условий:

Текст может быть довольно длинным, так что при создании метки указываем флаг WRAP, чтобы текст автоматически разбивался на несколько строк при нехватке места. Расположим компонент по центру и разрешим ему заполнить все горизонтальное пространство. Также укажем, что компонент занимает два столбца таблицы компоновки. Запускаем и получаем окошко с картинки «Виджет погоды».

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

Swing: всегда свежие новости

На Swing мы напишем виджет для отображения RSS-новостей. Начинаем, как и в прошлый раз, с создания окна. Класс, реализующий функционал стандартного окна в Swing, называется JFrame. По умолчанию закрытие окна приложения в Swing не приводит к остановке программы, так что лучше прописать, как должно себя вести окно при закрытии:

Для представления новостей лучше всего подходит таблица. Swing построен на паттерне «Модель —представление — контроллер» (MVC). В архитектуре MVC модель предоставляет данные, представление отвечает за отображение данных (например, текст, поля ввода), а контроллер обеспечивает взаимодействие между моделью и представлением. Таблица хорошо демонстрирует этот подход. Для представления данных используется класс, реализующий интерфейс TableModel.

Для хранения информации о доступных новостях заведем класс FeedMessage c полями для названия статьи и даты выхода:

Чтобы упростить и ускорить разработку, наследуем нашу модель данных от класса AbstractTableModel, который предлагает готовую реализацию почти всех методов интерфейса TableModel.

Метод fireTableDataChanged сообщает представлению, что модель данных изменилась и необходима перерисовка.

Создаем таблицу и немного изменяем ее вид, чтобы она была больше похожа на виджет. Убираем линии между строками и столбцами, увеличиваем высоту строки и убираем заголовок таблицы с названиями колонок:

Теперь займемся внешним видом ячеек. Swing позволяет назначать отдельные классы представления для разных типов данных. За отрисовку отдельных ячеек таблицы отвечает класс, наследующий интерфейс TableCellRenderer. По умолчанию используется DefaultTableCellRenderer, который представляет собой текстовую метку.

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

Чтобы таблица начала использовать наш отрисовщик, необходимо добавить метод, который возвращает тип данных для каждой ячейки, в модель данных:

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

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

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

В отличие от SWT, объекты «цвет» и «шрифт» освобождаются автоматически, так что можно больше не переживать за утечки памяти.

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

Теперь поменяем форму окна на прямоугольник с закругленными углами. Лучше всего это делать в слушателе компонента, так как, если размер окна изменится, форма окна будет правильно пересчитана:

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

Наконец, открываем окно в графическом потоке. SwingUtilities.invokeLater(new Runnable() < public void run() < frame.setVisible(true); >>);

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

JavaFX: послушаем музычку

И наконец, гвоздь сезона — JavaFX. Воспользуемся его мультимедийными возможностями и компонентом для построения графиков и сделаем простенький эквалайзер.

Для начала наследуем класс виджета от Application. Это основной класс приложения в JavaFX. Application содержит основные методы жизненного цикла приложения. Компоненты формы создаются в методе start, аргументом которому служит класс Stage. Stage представляет собой окно программы. Изменим стиль окна на TRANSPARENT, чтобы убрать обрамление и кнопки. В Stage помещается класс Scene, в котором задаются размеры окна и цвет фона. В Scene, в свою очередь, передаем класс Group, в который будем помещать дочерние компоненты:

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

Заполняем диаграмму начальными данными:

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

Добавляем оба компонента к группе:

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

Загружаем песню в плеер:

Добавляем слушатель, который будет обновлять столбиковую диаграмму:

Делаем сцену видимой и запускаем песню:

И наслаждаемся такой вот красотой.

Заключение

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

Материал по информатике на тему «Разработка с нуля интерактивного веб-приложения на языке Java»

Описание разработки

Содержание

Глава 1. Технологическая платформа приложения

1.2. Языки программирования…………………………………11-14

1.3. Система управления базами данных (СУБД)……………15-18

Глава 2. Проектирование приложения

2.1. Общая архитектура приложения………………………….21-22

2.2. Проектирование базы данных…………………………….23-25

Глава 3. Описание разработанных компонентов

3.1. Описание разработанных страниц………………………..26-35

3.2. Сравнение с аналогами………………………………………..36

3.3. Проблемы и способы их решения…………………………….37


Глава 4. Использованные технологии и библиотеки

4.5. Фреймворк Facelets………………………………………. 48-50

4.6. Библиотека Prime Faces……………………………………51-52

4.8. Библиотека JavaMail ………………………………………….54

4.9. Java Database Connectivity…………………………………55-56

4.10. Expression Language…………………………………. ….57-58

Введение

Сегодня все чаще и чаще мы слышим разговоры о веб-приложениях. И хотя эти разговоры на слуху не так давно, веб-приложениями люди пользуются уже не год и не два. Многие из них прочно вошли в нашу жизнь. Некоторые считают, что создание веб-приложений сегодня – это просто дань моде, другие – что за ними будущее. Где же истина, и что на самом деле представляют собой эти загадочные для многих веб-приложения?

Веб-приложение представляет собой пользовательскую программу, основная часть которой содержится на удаленном сервере, а пользовательский интерфейс (UI) отображается в браузере в виде веб-страниц.

Запуск веб-приложения ничем не отличается от загрузки обычной веб-страницы. Отличительной особенностью веб-приложения от традиционного сайта является способ взаимодействия пользователей с информацией, предоставленной на ресурсе. В случае простого сайта при прохождении пользователя по ссылке, браузер заново загружает страницу со всеми сопутствующими файлами (файлы стилей, javascript-файлы и другие), что даже при хорошем подключении к сети Интернет в среднем занимает от 1 до 10 секунд (ожидание ответа от сервера, ожидание обновления экрана, ожидание ответа на запрос и генерирования новой страницы). В случае же веб-приложения используется технология асинхронных запросов (AJAX), которая позволяет вести передачу данных с сервером в «фоновом» режиме, и при появлении ответа на запрос обновлять только часть страницы, т.е. традиционные задержки на ожидание ответа на запрос и на перерисовку всей страницы отсутствуют.

Рассмотрим некоторые плюсы веб-приложений.

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

Вторым плюсом веб-приложений можно назвать то, что сам факт их существования полностью меняет способ распространения продукта. Здесь создатели отходят от традиционных способов распространения программных продуктов путем продажи копий и установки их на каждый компьютер пользователей. Теперь все гораздо проще: единственная версия приложения расположена на сервере, а все пользователи имеют доступ к ее пользовательскому интерфейсу из любого места в мире, где есть Интернет. При этом пользователю даже не нужно устанавливать новую версию приложения – сразу после своего появления она доступна всем. Во всем этом явно виден положительный момент для разработчиков – им не нужно заботиться о совместимости версий своих приложений, поскольку все пользователи единовременно получают доступ и работают с самой последней версией приложения.

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

Четвертым плюсом можно назвать то, что для работы с приложением от пользователя ничего не нужно. Разве что компьютер и установленный браузер. Но тут проблем нет – Интернет-браузер уже имеется в любой операционной системе, и для доступа к необходимому веб-приложению достаточно просто загрузить его URL в браузер. Использование веб-приложений во многом снимает ограничения, накладываемые на аппаратную часть компьютера. То есть определенные системные требования к ПК все же есть, но их уровень автоматически достигнут компьютером, раз на нем уже запущены ОС и браузер.

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

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

При выполнении выпускной квалификационной работы в качестве предметной области было выбрано создание интерактивного веб-приложения для кафе «В.Ключников», расположенной на улице Баумана г.Казани.

Заключение

В настоящей квалификационной работе на основе поставленных задач было создано интерактивное веб-приложение.

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

— возможность регистрации и авторизации на сайте;

— уникальную услугу «Организация торжеств», рассчитывающую стоимость и количество блюд в зависимости от числа гостей;

— сортировку и выборку по меню.

В основе разработанной системы лежит трехуровневая архитектура клиент-сервер, которая позволяет более точно назначать полномочия пользователей. Это повышает защищенность системы (по сравнению с обычной архитектурой) не только от умышленного нападения, но и от ошибочных действий персонала. Нужно отметить удобство интерфейса, высокую эффективность обновления, редактирования и удаления данных, которая не требует перезагрузки страницы браузера. Также выполнена разработка модуля административной панели, позволяющего работать с базой данных прямо с веб-страницы, модуля обратной связи. При разработке приложения применен паттерн проектирования «модель-представление-контроллер» (MVC), использованы новые технологии.

Данное приложение разработано полностью и готово к размещению на хостинге. Также планируется создание мобильного приложения данного сайта для ОС Android.

Среды разработки Java

Одни среды разработки содержат все это из коробки, другие доводятся до этого статуса с подключением плагинов и модулей. Вот 10 лучших IDE для java на сегодняшний день.

IntelliJ IDEA

Описание: Одна из самых функциональных сред для java разработки, оснащённая системой интеллектуальной помощи в написании кода. Исходя из контекста, IDEA настраивает работу автодополнения и доступность инструментов. Обилие инструментов позволяет ускорить разработку, например с помощью шаблонов и повторений, а также увеличить производительность конечной программы. Огромное количество плагинов и надстроек под любую задачу делают среду java разработки IDEA почти идеальным инструментом..

Стоимость: 499$ за первый год работы.

NetBeans

Описание: Позиционируется производителем, как среда разработки, поддерживающая все новейшие функции Java, позволяющая писать код без ошибок благодаря инструменту FindBug. Сайт, документация и сама IDE для java на русском языке. Пожалуй, самая мощная бесплатная среда java разработки.

Eclipse

Описание: У этой IDE самое больше сообщество разработчиков, отсюда же и самое внушительное количество плагинов. Обратная сторона — многие из них сомнительного качества и содержания. Полезна данная система ещё и как инструмент мультиязычной разработки — количество поддерживаемых языков благодаря энтузиастам превышает 20. Кроме того, это одна из лучших сред java разработки для android.

Codenvy

Описание: Главный акцент — удобство работы пользователя. В первую очередь это касается интуитивно понятного интерфейса, отсутствия перегруженности инструментами, возможности многопользовательского доступа к коду. Стандартные «фичи» вроде подсветки кода, рефакторинга, автозаполнения и поддержки Docker — в наличии.

Стоимость: Бесплатно для одного пользователя и ограниченного объёма. Для командной разработки — 10-20$ в месяц за память и членов команды.

Eclipse che

Описание: Совместный проект Eclipse и Codenvy, имеющий облачный фундамент. Поддерживает множество типов приложений и систем сборки для быстрой разработки. Огромное количеств плагинов и надстроек из сообщества прилагается.

BlueJ

Описание: Среда разработки для тех, кто только делает свои первые шаги в программировании, то есть школьников и студентов. Здесь простой интерфейс, минимум функций и почти нет пользовательских настроек, зато имеется версия среды java разработки на русском языке.

Greenfoot

Описание: Среда джава разработки для самых маленьких. В основе лежит обучение Java через графический интерфейс и игры, вроде того, как это реализовано в Scratch или Logo. Для серьёзной разработки Greenfoot не подходит категорически.

DrJava

Описание: Ещё одна простая и легковесная (всего 13 МБ) IDE для написания кода. Ориентирована на студентов, может быть установлена в качества плагина в Eclipse для дальнешего перехода на более функциональную платформу.

JDeveloper

Описание: Бесплатная среда ява разработки от Oracle. Позволяет максимально задействовать декларативный и визуальный подход к разработке. Имеет 2 исполнения: Java Edition и Studio Edition. Первая версия представляет общий функционал разработки, вторая — создание коммерческих приложений.

Android Studio

Описание: профильная среда java разработки на Android. В основе лежит IntelliJ IDEA, оптимизированная под решение конкретных мобильных задач: рефакторинга, сборки, шаблонизации, поиска причин низкой производительности и её увеличения. Рекомендуем посмотреть мастер-класс по созданию клиент-серверного приложения на базе Android.

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

Пришло время перейти от особенностей языка к программам, которые помогут писать код быстрее и правильнее. Среда разработки (IDE — Integrated Development Environment) включает в себя:

Одни среды разработки содержат все это из коробки, другие доводятся до этого статуса с подключением плагинов и модулей. Вот 10 лучших IDE для java на сегодняшний день.

IntelliJ IDEA

Описание: Одна из самых функциональных сред для java разработки, оснащённая системой интеллектуальной помощи в написании кода. Исходя из контекста, IDEA настраивает работу автодополнения и доступность инструментов. Обилие инструментов позволяет ускорить разработку, например с помощью шаблонов и повторений, а также увеличить производительность конечной программы. Огромное количество плагинов и надстроек под любую задачу делают среду java разработки IDEA почти идеальным инструментом..

Стоимость: 499$ за первый год работы.

NetBeans

Описание: Позиционируется производителем, как среда разработки, поддерживающая все новейшие функции Java, позволяющая писать код без ошибок благодаря инструменту FindBug. Сайт, документация и сама IDE для java на русском языке. Пожалуй, самая мощная бесплатная среда java разработки.

Eclipse

Описание: У этой IDE самое больше сообщество разработчиков, отсюда же и самое внушительное количество плагинов. Обратная сторона — многие из них сомнительного качества и содержания. Полезна данная система ещё и как инструмент мультиязычной разработки — количество поддерживаемых языков благодаря энтузиастам превышает 20. Кроме того, это одна из лучших сред java разработки для android.

Codenvy

Описание: Главный акцент — удобство работы пользователя. В первую очередь это касается интуитивно понятного интерфейса, отсутствия перегруженности инструментами, возможности многопользовательского доступа к коду. Стандартные «фичи» вроде подсветки кода, рефакторинга, автозаполнения и поддержки Docker — в наличии.

Стоимость: Бесплатно для одного пользователя и ограниченного объёма. Для командной разработки — 10-20$ в месяц за память и членов команды.

Eclipse che

Описание: Совместный проект Eclipse и Codenvy, имеющий облачный фундамент. Поддерживает множество типов приложений и систем сборки для быстрой разработки. Огромное количеств плагинов и надстроек из сообщества прилагается.

BlueJ

Описание: Среда разработки для тех, кто только делает свои первые шаги в программировании, то есть школьников и студентов. Здесь простой интерфейс, минимум функций и почти нет пользовательских настроек, зато имеется версия среды java разработки на русском языке.

Greenfoot

Описание: Среда джава разработки для самых маленьких. В основе лежит обучение Java через графический интерфейс и игры, вроде того, как это реализовано в Scratch или Logo. Для серьёзной разработки Greenfoot не подходит категорически.

DrJava

Описание: Ещё одна простая и легковесная (всего 13 МБ) IDE для написания кода. Ориентирована на студентов, может быть установлена в качества плагина в Eclipse для дальнешего перехода на более функциональную платформу.

JDeveloper

Описание: Бесплатная среда ява разработки от Oracle. Позволяет максимально задействовать декларативный и визуальный подход к разработке. Имеет 2 исполнения: Java Edition и Studio Edition. Первая версия представляет общий функционал разработки, вторая — создание коммерческих приложений.

Android Studio

Описание: профильная среда java разработки на Android. В основе лежит IntelliJ IDEA, оптимизированная под решение конкретных мобильных задач: рефакторинга, сборки, шаблонизации, поиска причин низкой производительности и её увеличения. Рекомендуем посмотреть мастер-класс по созданию клиент-серверного приложения на базе Android.

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

Ajax для Java разработчиков: Часть 1. Строим динамические приложения на языке Java

Для написания апплетов и приложений Java требуются такие средства разработки, как JDK. JDK включает следующие компоненты: среда выполнения Java, компилятор Java и API Java. Начало работы не представляет трудности ни для опытных, ни для начинающих программистов.

Где можно загрузить JDK?

Чтобы загрузить последнюю версию комплекта разработчика Java Development Kit (JDK), перейдите в раздел загрузки JDK.
Разработчики также могут посетить сообщество для разработчиков Java Oracle Technology Network for Java Developers и получить исчерпывающую информацию о технологии Java, включая документацию и обучающие материалы.

Начинающим пользователям Java

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

Как получить сертификат Java?

Сертификат обучения технологии Oracle Java является наглядной демонстрацией технических навыков, увлеченности профессией и высокого уровня мотивации, — качеств, которые высоко ценятся и высоко оплачиваются работодателями. Признанные во всей отрасли возможности обучения и получения сертификатов по технологии Java Oracle позволяют гарантировать наличие навыков, необходимых для эффективного выполнения задач в ИТ-организации.
» Подробнее о Сертификации Java

Конференции для разработчиков Java
  • JavaOne — главная конференция для разработчиков Java, где можно узнать о последних технологиях Java, повысить уровень технических знаний и задать вопросы коллегам-разработчикам и специалистам по планированию. Oracle проводит ежегодные конференции JavaOne, включая основную конференцию JavaOne в Сан-Франциско и конференции регионального уровня. Посетите веб-сайт www.oracle.com/javaone для получения дополнительной информации о предстоящих мероприятиях и местах их проведения.
  • Дни разработчиков Oracle Technology Network — бесплатные практические семинары для разработчиков Java, которые регулярно проводятся во всех странах мира.
  • Oracle также оказывает спонсорскую поддержку другим компаниям, которые организуют мероприятия, посвященные технологии Java. Чтобы узнать о предстоящих событиях в вашем регионе, воспользуйтесь поиском по каталогу мероприятий Oracle.
Java Magazine

Java Magazine — это периодическое интернет-издание, выпускаемое раз в два месяца. Этот журнал является авторитетным источником информации о технологии Java, языке программирования Java и приложениях на основе Java для тех, кому эти знания необходимы в профессиональной деятельности, и для тех, кто только начинает осваивать технологию Java. Журнал включает в себя описания инновационных приложений Java, технические пошаговые инструкции для Java, новости сообщества Java, а также информацию о новой документации Java, конференциях и мероприятиях.

Академия Oracle

Академия Oracle предоставляет учреждениям школьного, профессионального и высшего образования полный портфель программного обеспечения, учебные курсы, хостинговые технологии, факультативное обучение, поддержку и ресурсы сертификации для использования в учебных целях. Эти ресурсы можно включать в состав курсов по информатике и бизнесу, чтобы учащиеся приобрели необходимые навыки до начала профессиональной деятельности в той или иной отрасли. Академия Oracle обучает более 1,5 миллионов человек в 95 странах. Недавно Академия Oracle расширила свою учебную программу и включила в нее курсы по Java. Дополнительную информацию можно найти на веб-сайте Академия Oracle — программирование на языке Java.

Мастер Йода рекомендует:  5 бесплатных инструментов для создания диаграммы сети
Добавить комментарий