Java.Промышленное программирование

И.Н. Блинов, В.С. Романчик

Java.

ПРОМЫШЛЕННОЕ

ПРОГРАММИРОВАНИЕ

Практическое пособие

Минск «УниверсалПресс»

2007

УДК 004.434 ББК 32.973.26-018.2

Б69

А в т о р ы :

доцент кафедры Численных методов и программирования БГУ, кандидат физико-математических наук И.Н. Блинов,

доцент, зав. кафедрой Численных методов и программирования БГУ, кандидат физико-математических наук В.С. Романчик

Р е ц е н з е н т ы :

доцент, кандидат физико-математических наук И.М. Галкин, доцент, кандидат технических наук А.Е. Люлькин

Блинов, И.Н.

Б69 Java. Промышленное программирование : практ. пособие / И.Н. Блинов, В.С. Романчик. – Минск : УниверсалПресс, 2007. – 704 с.

ISBN 978-985-6699-63-7

Пособие предназначено для программистов, начинающих и продолжающих изучение технологий Java SE 6 и J2EE. В его первой части рассматриваются основы языка Java и концепции объектно-ориентированного программирования. Во второй части изложены важнейшие аспекты применения библиотек классов языка Java, включая файлы, коллекции, сетевые и многопоточные приложения, а также взаимодействие с ХМL. В третьей части приведены основы программирования распределенных информационных систем с применением сервлетов, JSP, баз данных

исобственных тегов разработчика.

Вконце каждой главы даются тестовые вопросы по материалу главы и задания для выполнения. В приложениях приведены дополнительные материалы, относящиеся к использованию HTML, XML, JavaScript, а также краткое описание популярных технологий Struts и Hibernate для разработки распределенных систем, объединяющих возможности J2EE и XML.

УДК 004.434 ББК 32.973.26-018.2

© Блинов И.Н., Романчик В.С., 2007

ISBN 978-985-6699-63-7

© Оформление. УП «УниверсалПресс», 2007

studfile.net

Программирование — Java.Промышленное программирование.pdf


И.Н. Блинов, В.С. Романчик
Java
.
ПРОМЫШЛЕННОЕ
ПРОГРАММИРОВАНИЕ
Практическое пособие
Минск
«УниверсалПресс»
2007


УДК 004.434
ББК
32.973.26-018.2
Б69
А в т о р ы : доцент кафедры Численных методов и программирования БГУ, кандидат физико-математических наук И.Н. Блинов, доцент, зав. кафедрой Численных методов и программирования БГУ, кандидат физико-математических наук В.С. Романчик
Р е ц е н з е н т ы : доцент, кандидат физико-математических наук И.М. Галкин, доцент, кандидат технических наук А.Е. Люлькин
Блинов, И.Н.
Б69
Java. Промышленное программирование : практ. пособие / И.Н. Блинов,
В.С. Романчик. – Минск : УниверсалПресс, 2007. – 704 с.
ISBN 978-985-6699-63-7
Пособие предназначено для программистов, начинающих и продолжающих изучение технологий Java SE 6 и J2EE. В его первой части рассматриваются основы языка Java и концепции объектно-ориентированного программирования. Во второй части изложены важнейшие аспекты применения библиотек классов языка Java, включая файлы, коллекции, сетевые и многопоточные приложения, а также взаимодействие с ХМL. В третьей части приведены основы программирования распределенных информационных систем с применением сервлетов, JSP, баз данных и собственных тегов разработчика.
В конце каждой главы даются тестовые вопросы по материалу главы и задания для выполнения. В приложениях приведены дополнительные материалы, относящиеся к использованию
HTML, XML, JavaScript, а также краткое описание популярных технологий Struts и Hibernate для разработки распределенных систем, объединяющих возможности J2EE и XML.
УДК 004.434
ББК 32.973.26-018.2
© Блинов И.Н., Романчик В.С., 2007
ISBN 978-985-6699-63-7
© Оформление. УП «УниверсалПресс», 2007


КРАТКОЕ СОДЕРЖАНИЕ
Предисловие ………………………………………………………………………………………………… 10
Часть 1. ОСНОВЫ ЯЗЫКА JAVA
Глава 1. ВВЕДЕНИЕ В КЛАССЫ И ОБЪЕКТЫ …………………………………………. 11
Глава 2. ТИПЫ ДАННЫХ И ОПЕРАТОРЫ ……………………………………………….. 27
Глава 3. КЛАССЫ …………………………………………………………………………………….. 50
Глава 4. НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ ………………………………………. 78
Глава 5. ПРОЕКТИРОВАНИЕ КЛАССОВ ………………………………………………… 105
Глава 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ ……………………………….. 139
Часть 2. ИСПОЛЬЗОВАНИЕ КЛАССОВ И БИБЛИОТЕК
Глава 7. ОБРАБОТКА СТРОК ………………………………………………………………….. 160
Глава 8. ИСКЛЮЧЕНИЯ И ОШИБКИ ……………………………………………………… 190
Глава 9. ФАЙЛЫ. ПОТОКИ ВВОДА/ВЫВОДА ………………………………………… 205
Глава 10. КОЛЛЕКЦИИ …………………………………………………………………………….. 229
Глава 11. ГРАФИЧЕСКИЕ ИНТЕРФЕЙСЫ ПОЛЬЗОВАТЕЛЯ …………………… 259
Глава 12. СОБЫТИЯ …………………………………………………………………………………. 275
Глава 13. ЭЛЕМЕНТЫ КОМПОНОВКИ И УПРАВЛЕНИЯ ……………………….. 287
Глава 14. ПОТОКИ ВЫПОЛНЕНИЯ …………………………………………………………. 328
Глава 15. СЕТЕВЫЕ ПРОГРАММЫ ………………………………………………………….. 350
Глава 16. XML & JAVA …………………………………………………………………………….. 364
Часть 3. ТЕХНОЛОГИИ РАЗРАБОТКИ WEB-ПРИЛОЖЕНИЙ
Глава 17. ВВЕДЕНИЕ В СЕРВЛЕТЫ И JSP ……………………………………………….. 414
Глава 18. СЕРВЛЕТЫ ……………………………………………………………………………….. 426
Глава 19. JAVA SERVER PAGES ………………………………………………………………. 446
Глава 20. JDBC …………………………………………………………………………………………. 479
Глава 21. CЕССИИ, СОБЫТИЯ И ФИЛЬТРЫ ……………………………………………. 504
Глава 22. ПОЛЬЗОВАТЕЛЬСКИЕ ТЕГИ ……………………………………………………. 523
УКАЗАНИЯ И ОТВЕТЫ …………………………………………………………………………… 536
Приложение 1. НTML ………………………………………………………………………………… 552
Приложение 2. JavaScript ……………………………………………………………………………. 574
Приложение 3. UML ………………………………………………………………………………….. 599
Приложение 4. Базы данных и язык SQL …………………………………………………….. 608
Приложение 5. Hibernate ………………………………………………………………………………… 625
Приложение 6. Struts ………………………………………………………………………………….. 645
Приложение 7. Журнал сообщений (Logger) ……………………………………………….. 667
Приложение 8. Apache Ant …………………………………………………………………………. 676
Приложение 9. Портлеты …………………………………………………………………………… 690
Список рекомендуемой литературы и источников ……………………………………….. 703


СОДЕРЖАНИЕ
Предисловие ………………………………………………………………………………………………… 10
Часть 1. ОСНОВЫ ЯЗЫКА JAVA
Глава 1. ВВЕДЕНИЕ В КЛАССЫ И ОБЪЕКТЫ ……………………………………… 11
Основные понятия ООП …………………………………………………………. 11
Язык Java ………………………………………………………………………………. 14
Нововведения версий 5.0 и 6.0 ……………………………………………….. 15
Простое приложение ……………………………………………………………… 16
Классы и объекты …………………………………………………………………..
19
Сравнение объектов ……………………………………………………………….. 20
Консоль …………………………………………………………………………………. 21
Простой апплет ……………………………………………………………………… 23
Задания к главе 1 ……………………………………………………………………. 24
Тестовые задания к главе 1 …………………………………………………….. 25
Глава 2. ТИПЫ ДАННЫХ И ОПЕРАТОРЫ …………………………………………….. 27
Базовые типы данных и литералы …………………………………………… 27
Документирование кода …………………………………………………………. 29
Операторы …………………………………………………………………………….. 31
Классы-оболочки …………………………………………………………………… 34
Операторы управления …………………………………………………………… 37
Массивы ………………………………………………………………………………… 39
Класс Маth …………………………………………………………………………….. 43
Управление приложением ………………………………………………………. 44
Задания к главе 2 ……………………………………………………………………. 47
Тестовые задания к главе 2 …………………………………………………….. 49
Глава 3. КЛАССЫ …………………………………………………………………………………….. 50
Переменные класса и константы …………………………………………….. 50
Ограничение доступа ……………………………………………………………… 51
Конструкторы ………………………………………………………………………… 52
Методы …………………………………………………………………………………. 54
Статические методы и поля ……………………………………………………. 55
Модификатор final …………………………………………………………………. 56
Абстрактные методы ……………………………………………………………… 57
Модификатор native ……………………………………………………………….. 57
Модификатор synchronized …………………………………………………….. 57
Логические блоки ………………………………………………………………….. 58
Перегрузка методов ……………………………………………………………….. 59
Параметризованные классы ……………………………………………………. 60
Параметризованные методы …………………………………………………… 65
Методы с переменным числом параметров ……………………………… 65
Перечисления ………………………………………………………………………… 67
Аннотации …………………………………………………………………………….. 70
Задания к главе 3 ……………………………………………………………………. 72
Тестовые задания к главе 3 …………………………………………………….. 76


Глава 4. НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ ……………………………………. 78
Наследование ………………………………………………………………………… 78
Использование final ……………………………………………………………….. 81
Использование super и this ……………………………………………………… 82
Переопределение методов и полиморфизм ……………………………… 83
Методы подставки …………………………………………………………………. 86
Полиморфизм и расширяемость ……………………………………………… 86
Статические методы и полиморфизм ………………………………………. 88
Абстракция и абстрактные классы ………………………………………….. 89
Класс Object …………………………………………………………………………… 91
Клонирование объектов …………………………………………………………. 95
“Сборка мусора” и освобождение ресурсов …………………………….. 97
Задания к главе 4 ……………………………………………………………………. 99
Тестовые задания к главе 4 ……………………………………………………. 102
Глава 5. ПРОЕКТИРОВАНИЕ КЛАССОВ ……………………………………………… 105
Шаблоны проектирования GRASP …………………………………………. 105
Шаблон Expert ………………………………………………………………………. 105
Шаблон Creator …………………………………………………………………….. 107
Шаблон Low Coupling …………………………………………………………… 108
Шаблон High Cohesion ………………………………………………………….. 111
Шаблон Controller …………………………………………………………………. 113
Шаблоны проектирования GoF ……………………………………………… 114
Порождающие шаблоны ……………………………………………………….. 115
Шаблон Factory …………………………………………………………………….. 115
Шаблон AbstractFactory …………………………………………………………. 117
Шаблон Builder …………………………………………………………………….. 120
Шаблон Singleton ………………………………………………………………….. 122
Структурные шаблоны ………………………………………………………….. 123
Шаблон Bridge ……………………………………………………………………… 123
Шаблон Decorator …………………………………………………………………. 125
Шаблоны поведения ……………………………………………………………… 127
Шаблон Command …………………………………………………………………. 128
Шаблон Strategy ……………………………………………………………………. 131
Шаблон Observer …………………………………………………………………… 133
Антишаблоны проектирования ……………………………………………… 135
Задания к главе 5 …………………………………………………………………… 137
Тестовые задания к главе 5 ……………………………………………………. 137
Глава 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ …………………………… 139
Интерфейсы ………………………………………………………………………….. 139
Пакеты …………………………………………………………………………………. 142
Статический импорт ……………………………………………………………… 145
Внутренние классы ……………………………………………………………….. 146
Внутренние (inner) классы …………………………………………………….. 147
Вложенные (nested) классы ……………………………………………………. 152
Анонимные (anonymous) классы ……………………………………………. 153
Задания к главе 6 …………………………………………………………………… 156
Тестовые задания к главе 6 ……………………………………………………. 158


Часть 2. ИСПОЛЬЗОВАНИЕ КЛАССОВ И БИБЛИОТЕК
Глава 7. ОБРАБОТКА СТРОК ………………………………………………………………… 160
Класс String …………………………………………………………………………… 160
Классы StringBuilder и StringBuffer ………………………………………… 165
Форматирование строк ………………………………………………………….. 167
Лексический анализ текста ……………………………………………………. 173
Регулярные выражения …………………………………………………………. 174
Интернационализация текста ………………………………………………… 178
Интернационализация чисел ………………………………………………….. 181
Интернационализация дат ……………………………………………………… 182
Задания к главе 7 …………………………………………………………………… 184
Тестовые задания к главе 7 ……………………………………………………. 188
Глава 8. ИСКЛЮЧЕНИЯ И ОШИБКИ …………………………………………………… 190
Иерархия и способы обработки ……………………………………………… 190
Оператор throw ……………………………………………………………………… 195
Ключевое слово finally ………………………………………………………….. 197
Собственные исключения ……………………………………………………… 198
Наследование и исключения ………………………………………………….. 199
Отладочный механизм assertion …………………………………………….. 201
Задания к главе 8 …………………………………………………………………… 202
Тестовые задания к главе 8 ……………………………………………………. 203
Глава 9. ФАЙЛЫ. ПОТОКИ ВВОДА/ВЫВОДА ……………………………………… 205
Класс File ……………………………………………………………………………… 205
Байтовые и символьные потоки ввода/вывода ………………………… 207
Предопределенные потоки …………………………………………………….. 212
Сериализация объектов …………………………………………………………. 214
Консоль ………………………………………………………………………………… 218
Класс Scanner ……………………………………………………………………….. 219
Архивация ……………………………………………………………………………. 222
Задания к главе 9 …………………………………………………………………… 226
Тестовые задания к главе 9 ……………………………………………………. 227
Глава 10. КОЛЛЕКЦИИ ………………………………………………………………………….. 229
Общие определения ………………………………………………………………. 229
Списки …………………………………………………………………………………. 231
Deque ……………………………………………………………………………………. 239
Множества ……………………………………………………………………………. 240
Карты отображений ………………………………………………………………. 245
Унаследованные коллекции …………………………………………………… 249
Класс Collections …………………………………………………………………… 250
Класс Arrays …………………………………………………………………………. 253
Задания к главе 10 …………………………………………………………………. 255
Тестовые задания к главе 10 ………………………………………………….. 257

uhimik.ru

Начинающим Java программистам / Habr

Программирую на Java вот уже 7 лет. Но на работе часто приходится обучать новое поколение. В связи с этим и решил сделать некоторую шпаргалку, которая, надеюсь, пригодится и для хабрчан. Если кто-то может помочь дополнить чем-то информацию из этой статьи, то пишите! Итак:
Основные ресурсы для начального обучения

  • www.javable.com — сайт со статьями и tutorial’ом по Java. Все в основном на русском.
  • www.exampledepot.com — очень полезный ресурс, где собраны краткие примеры использования классов для тех или иных пакетов
  • java.sun.com — без первоисточника не обойтись. Для любого Java программиста JavaDoc должен быть истиной в последней инстанции. Так же здесь можно найти серию tutorial’ов на все возможные темы.


Основные Java пакеты

Ниже приведён список Java пакетов, в которых программист должен свободно ориентироваться. Знакомиться с ними рекомендуется как по JavaDoc’ам, так и с помощью www.exampledepot.com. Все пакеты выстроены в рекомендуемом порядке для изучения. Итак:
  1. java.lang — основа основ. Каждый класс в этом пакете нуждается в отдельном внимании.
  2. java.io — ни одна программа не может обойтись без операций с вводом-выводом.
  3. java.util — пакет в основном содержит все необходимое для работы с коллекциями: Collection, Enumeration, Set, List, Map и т.д. и т.п.
  4. java.net — содержит основные классы для работы с сетью.
  5. java.text — все необходимое для форматирования текста
  6. java.lang.reflect — Java не была бы Java’ой если бы не Reflection. Reflection стирает грань между данными и кодом.
  7. javax.sql — все необходимое по работе с базами данных
  8. javax.xml.*, org.w3c.dom.*, org.xml.sax.* — без этих пакетов работа с XML просто немыслима
Ресурсы для расширения кругозора

  • onjava.com — рано или поздно все новости мира Java попадают сюда
  • www.javaspecialists.eu — ресурс полезен как новичкам, так и продвинутым программистам, так как содержит много статей о тонкостях работы с Java.
  • www.theserverside.com — рекомендуется подписаться на RSS, так как часто проскакивают весьма интересные вещи по Java.
Java Библитеки, которые должны знать все

Java не заканчивается знаниями лишь о возможностях JSDK. Чтобы чувствовать себя комфортно необходимо знать еще десятка два сторонних библиотек, используемых Java программистами повсеместно. Итак, начнем с основных:
  • Commons Lang — то что «забыли» включить в JDK
  • Commons Math — отличное дополнение для java.math
  • Commons Logging — логирование должно быть грамотным. За System.out.println для вывода логов начинающим программистам уже через неделю обучения следует отрубать руки.
  • Commons Net — логическое продолжение для пакета java.net. Множество классов для работы с основными сетевыми протоколами.
  • Commons VFS — отличная библиотека для абстрагирования от способа хранения файла. Позволяет достаточно обобщено иметь доступ до файлов по FTP, SFTP, WEBDAV, (G)ZIP и т.д.
  • Commons IO — работа с вводом-выводом часто получается весьма муторной, но с этой библиотекой все становится несколько веселее.
  • HttpClient — библиотека по работе с http ресурсами.
  • JUnit — любой код, должен сопровождаться тестированием. Для автоматизации тестирования и предназначена эта библиотека.

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

habr.com

Java на производстве — Control Engineering Russia

Современным технологиям естественно присущ потенциал совершенствования того, что было сделано до их появления. В этой статье речь пойдет о введении в 1995 г компанией Sun Microsystems программного обеспечения и языка программирования, что сопровождалось такими усовершенствованиями, как независимость от платформы/операционной системы, возможность многократного использования программных приложений, поддержка связи Web-узлов и опора на промышленные стандарты.

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

Программное обеспечение, основанное на технологии Java, имеет ряд преимуществ для пользователей в промышленности. Поль Беннисон, отвечающий за вопросы развития предприятия в компании Schneider Electric-IAC Services, на первое место ставит независимость от аппаратной платформы и операционной системы. В этой связи он отмечает совместимость Java с платформами Microsoft Windows/Intel и другими широко распространенными альтернативами, такими как ARM и процессор AMD 64-bit Opteron, а также операционные системы Linux и VxWorks. Далее он поясняет, что ”врожденная поддержка” технологией Java таких ИТ стандартов передачи информации внутри предприятия как SQL, XML, Web-службы, открытые каналы связи БД и т.д. также помогают перекинуть мост между производством и руководством предприятия.

В качестве еще одного преимущества Беннисон отмечает „масштабируемую, модульную модель развертывания” Java. Так, например, она может улучшить возможность существующей системы ПЛК фиксировать и передавать данные о процессе/производстве на управляемое оборудование. „Кроме того, эта информация сразу доступна как локальным, так и удаленным пользователям. Это позволяет своевременно осуществлять поддержку решений, которые визуально представляются оператору на портативный браузер или как предупреждение по электронной почте, или непосредственно на удаленную систему диспетчерского управления предприятием”, – отмечает Беннисон.

Он также добавляет: „В 1996 г. компания Schneider Electric была одним из первых поставщиков средств промышленной автоматизации, который сделал программное обеспечение Java, Ethernet и Web-службы основными функциональными возможностями, встроенными в уровень управления архитектуры автоматизации, называемый теперь Transparent Ready”. На сегодняшний день во все оборудование автоматизации и управления, произведенное компанией, встроены агенты диагностики Java для удаленного мониторинга приборов. Таким образом, как утверждают в компании Schneider, любой пользователь на предприятии может получить информацию через HTTP, диагностику через разрешающий браузер Java и определяемые пользователем Web-страницы, если он находится в зоне ограничения межсетевого экрана компании и конфигурации обеспечения ИТ безопасности.

Объединяем оборудование предприятия

На этой демонстрации контроллер автоматизации на основе технологии Java (JAC) от Mitsubishi/Cyberonix, установленный на предприятии, получает сообщение о снижении запаса компакт-дисков от заказчика и посылает команду на пополнение запасов работу Mitsubishi RV-1A (вставка). После этого робот автоматически собирает необходимое количество дисков и передает их в отдел отгрузки

По утверждению доктора Бернарда Трэверсета, старшего технического руководителя в компании Sun Microsystems, среди новых разработок создателя Java Sun Microsystems можно назвать платформу Java 2 Enterprise Edition (J2EE), включающую Java Connector Architecture (JCA). Она расширила возможности интеграции программного обеспечения с оборудованием предприятия на основе различных протоколов на основе TCP/IP. Раньше приложения J2EE давали пользователям интерфейс на основе Web через HTML и HTTP, однако слишком общий интерфейс с браузером „тонкого” клиента был недостаточно надежным для типичной производственной среды. „Теперь, с использованием Java Server Faces, J2EE может гарантировать более мощные интерфейсы на основе той же технологии „тонкого” клиента”, – говорит доктор Трэверсет.

 

Он также отмечает, что протоколы Web-служб представляют развивающийся стандарт связи B2B, которому должны соответствовать серверы приложения J2EE для того, чтобы гарантировать возможность взаимодействия сетей. Более того, Web-службы (WS) и их принципы совместимы с распределенными архитектурами типичного промышленного оборудования. Таким образом, WS становятся эффективной моделью связи между цехами и управлением предприятия для выполнения таких задач, как графики/состояние производства, требования к материалам, информация о качестве и материально-техническое обеспечение.

На обзорной Web-странице показана SCADA-система на базе Java, являющаяся ключевой для управления и интеграции производства центрифуг для фармации, выпускаемых компанией Heinkel (Swedesboro, Нью Джерси, США). Сервер приложений работает на базе модуля JVM FactoryCast в ПЛК Quantum от Schneider Electric и помогает увеличить срок службы SCADA-системы в 2-3 раза по сравнению с традиционной системой

Трэверсет также упоминает версию 5.0 J2SE (Standard Edition) компании Sun и её библиотеку новых утилит взаимосовместимости. С её помощью совершенствуются „структурные компоненты потока” Java с целью более эффективного использования технологии Java в алгоритмах управления комплексными процессами, моделирования и автоматизации. J2SE 5.0 также способствует повышению качества функционирования и масштабируемости Java, так как сокращает время запуска и использование памяти. Эти особенности, по словам Трэверсета, „повышают жизнеспособность Java на небольших компьютерах, которые обычно применяются на производстве”.

Джон Бэйер, руководитель подразделения архитектуры программного обеспечения в компании Rockwell Automation, считает J2EE несомненным достижением в технологии Java в большей степени благодаря тому, что она упрощает создание интерфейсов Web-служб, жизненно необходимых для разработки распределенных производственных приложений. Наряду с таким преимуществом как популярность Java в качестве языка интеграции для MES-приложений, Бэйер называет переносимость Java на различные платформы, что позволяет применять один и тот же код в различных конфигурациях. Он также отмечает такую особенность технологии Java, как возможность её установки в небольших устройствах (и портативных вычислительных блоках), которые полезны на производстве.

По мнению Бенни Энгера, вице-президента подразделения по разработке программного обеспечения в компании GE Fanuc Automation, преимущества технологии Java (и схем XML) являются ключевыми для стратегии взаимодействия с бизнес-системами и мобильными устройствами. Выгода, которую получают пользователи, заключается в том, что снижаются издержки на интеграцию, расширяется функциональность и сокращается время отклика. Энгер объясняет это тем, что пользователи могут получать, анализировать и реагировать на события с самых разных устройств. В этом заключается расширение стратегии Proficy в GE Fanuc.

Энгер утверждает, что новое программное обеспечение, которое будет разработано GE Fanuc, позволит, например, загружать рабочие наряд-заказы на телефоны с двухсторонней связью, поддерживаемые Java. Это свяжет пользователей с рабочими нарядами и позволит обновить состояние сервера Proficy.

Майк Хьюстон, разработчик приложений компании Visiprise Inc., поставщика программного обеспечения управления производством, согласен с тем, что независимость от платформы, совместимая прикладная среда J2EE и поддержка стандартов дополняют список новых полезных возможностей технологии Java. Независимость от платформы дает пользователям возможность выбора оборудования и операционной системы по их желанию, в то время как J2EE предлагает рабочую среду с программным интерфейсом приложения (API) и общим языком разработки.

„Большая часть серверов J2EE, использующихся в промышленности, создают условия для быстрой и надежной работы производственных программ, – отмечает Хьюстон. – Java представляет собой открытую базовую платформу со встроенной поддержкой многих стандартов”. Серверы приложений обычно поддерживают такие стандарты как XML, HTTP, WS и др. для того, чтобы облегчить интеграцию с системами управления станками, ERP и другими системами. Visiprise Manufacturing, MES-программа компании на основе J2EE, предназначена для того, чтобы служить инструментом связи между системами цеха и предприятия.

В Visiprise также отмечают, что настройка и поддержка модулей программы, написанных на языке Java, легче по сравнению с менее открытой средой. „Работа с кодом Java идет быстрее и, в большинстве случаев, она более экономична”, – добавляет к сказанному Хьюстон.

Работа в реальном времени, безопасность

При внедрении в производство системы управления немаловажным вопросом является вопрос работы в реальном масштабе времени (RT). Самое простое объяснение реального времени сводится к тому, что для выполнения этого требования реакция системы управления должна обязательно быть получена в точных временных границах, установленных приложением.

Бэйер из компании Rockwell говорит о развитии приложений реального времени с использованием технологии Java, однако он советует особое внимание уделять процессу. При этом он называет две основные проблемы, которые вызывают беспокойство. Во-первых, с целью ускорения работы в приложениях реального времени часто используется компилированная Java. В этом случае надежные коды Java должны быть написаны так, чтобы они были ближе к операционной системе, поскольку, как объясняет Бэйер, интерпретацию виртуальной машины Java (JVM) нельзя использовать в RT части программы. Во-вторых, для функции управления памятью Java (сборка мусора) может потребоваться добавление слоя реального времени, который предоставляется поставщиками программного обеспечения (см. приложение „Основы Java” для получения дополнительной информации по вопросам JVM и „сборки мусора”). „Для работы в реальном времени необходимо рассмотреть полностью всю среду прикладной системы. Проблемы с языком представляют только часть общей картины”, – добавляет Бэйер.

В плане предложений Java для приложений реального времени компания Sun Microsystems сосредоточивает основное внимание на надежной обработке децентрализованных данных, что чрезвычайно важно для производственного процесса, и дополняет характеристики датчиков разнообразными усовершенствованными функциями, такими как синхронизация времени до субмикросекундного уровня. API Распределенный сбор данных и управление Java (Java Distributed Data Acquisition and Control – JDDAC) из программы Java System RFID компании Sun „действительно связывает любой датчик” с администратором событий RFID (RFID Event Manager). Трэверсет отмечает: „JDDAC гарантирует, что датчики и исполнительные устройства обладают такой характеристикой как самоописание и легко поддерживаются как объединенные в сеть объекты”.

В процессе решения проблем работы в режиме реального времени экспертная группа производителей программ от организации Java Community Process (JCP) разрабатывает спецификации Real-Time для Java (RTSJ), которые наряду с другими свойствами включают RT-потоки и асинхронные события. Компания Sun Microsystems недавно выпустила реализацию RTSJ. И все же в настоящее время необходима доработка RT-приложений для работы в режиме реального времени, особенно для встроенных систем. Примером может служить детерминированная сборка мусора. Другой организацией, которая активно занимается разработками в области RT Java, является Open Group.

Хотя внутрицеховая сеть менее доступна и более защищена, чем сети предприятия, она все же подвержена кибератакам. Для защиты от несанкционированного доступа, как поясняет Беннисон из компании Schneider Electric, требуется многочисленные средства, к ним относятся цифровая сертификация, шифрование на уровне защищенного сокета (SSL) и, конечно, соответствующие уровни доступа законного пользователя. В этом могут оказать помощь характеристики технологии Java.

По словам Беннисона „платформа Java позволяет встроить защиту на уровне модульности отдельного устройства управления. Встроенный сервер Java и Virtual Machine (или защищенный шлюз) ограничивают доступ к источнику информации”. Поскольку весь трафик проходит через защищенный шлюз, то отсутствует прямой доступ к отдельному устройству управления. Информация поступает от безопасных Web-серверов, доступных при соответствующих правах доступа. Беннисон утверждает, что представления Web-страницы обеспечивают доступ, разрешая вмешательство оператора с полной записью изменений.

Он выделяет три уровня масштабируемой конфигурации безопасности технологии Java. Безопасный означает использование безопасного шлюза, ограничивающего трафик, невозможность прямого доступа к устройству, невозможность доступа без авторизации и регистрацию всего доступа. Открыты только необходимые порты; все неиспользуемые порты защищены. „Модель „песочницы” Java (защищенной среды исполнения) гарантирует, что не произойдет загрузки вредоносного кода, переполнения буфера и тому подобных событий”, – добавляет к сказанному Беннисон.

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

В компании Sun полагают, что охват соединениями всего предприятия и производство по жесткому графику делают завод уязвимым и, соответственно, влекут за собой необходимость расширения мер безопасности и обеспечения связи. Трэверсет предлагает несколько возможных вариантов решения этой проблемы. Явное ограничение возможностей исполнения программы Java в соответствии с требуемым профилем („песочницей”) помогает ограничить потенциальное повреждение вычислительной системы. Неукоснительная аутентификация пользователей и систематический контроль их доступа к специфическим функциям и данным – это еще один шаг, так же, как и тщательное ведение контрольного журнала. Введение API для всех основных каналов, а также методов шифрования на основе сообщений повышают уровень защиты данных во время их передачи.

 

Продукты, приложения

Для развития современной технологии необходимо сотрудничество. Партнер Sun, компания Mitsubishi Electric Corp. из Японии, в сотрудничестве с технологической компанией Cyberonix Inc. из США создала контроллер автоматизации на основе технологии Java (JAC). Производимый в настоящее время JAC использует драйверы связи/адаптеры, написанные на языке Java, для соединения различных автоматических устройств в цехе и связи цеха и отдела обработки документации или для других приложений восходящего потока данных. Один порт Ethernet 10/100 Мбит/с осуществляет передачу восходящего потока, в то время как четыре последовательных порта (3 – для RS-232, 1 – для RS-485) обеспечивают прохождение нисходящего потока данных. Для передачи сообщений используется XML или другие общие форматы. На первом фото в этой статье представлена демонстрационная версия интеграции Java в производственную цепочку поставок. Здесь JAC работает как встроенный информационный шлюз реального времени, обеспечивающий пополнение истощившихся запасов компакт-дисков и связь с роботом Mitsubushi RV-1A, регуляторами Q-Platform, серворегуляторами J2 и устройствами передачи восходящего потока данных.

В компании Schneider Electric отмечают удачное решение в области технологии Java, которое используется в компании Heinkel USA (производитель центрифуг для фармации, работающих под регулирующим воздействием). Сообщается, что встроенные ПЛК-модули Quantum с JVM увеличивают эксплуатационный ресурс одноузловой SCADA-системы производства компании Heinkel до 10 лет по сравнению с максимальным сроком службы традиционной SCADA-системы, не превышающим 3 – 5 лет. Замена подтвержденного приложения SCADA предполагает большие затраты. „Надежное Web-приложение снижает стоимость подтверждения и продлевает срок службы приложения SCADA. Таким образом, затраты на обеспечение работы и обслуживания центрифуги снижаются на всем протяжении ее жизненного цикла”, – утверждают в компании Schneider.

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

Первое знакомство с основами технологии Java

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

Отличительной особенностью Java является то, что программы не запускаются напрямую на собственной операционной системе (ОС). Вместо этого Виртуальная машина Java (JVM) располагается между платформой и ОС как „интерпретатор”, что позволяет программам исполняться на любой компьютерной системе, имеющей специфическую JVM. Компилятор Java сначала переводит программу в байтовый код, а затем JVM интерпретирует ее в соответствии со специфической платформой. Эта особенность является одной из мер укрепления безопасности системы, поскольку прежде чем поступить на центральный процессор, апплеты Java отображаются в защищенной области памяти или „песочнице”. Для повышения эффективности таких приложений, как системы реального времени (RT), возможен обход JVM. В этом случае JIT-компилятор (компилятор реального времени) переводит программы в машинный код непосредственно во время работы приложения. Однако это происходит за счет снижения переносимости.

Другой специфической чертой технологии Java является автоматическая „сборка мусора” (GC) или управление памятью, когда учитывается любая область памяти, не задействованная программой. С одной стороны это освобождает разработчиков от решения этой немаловажной задачи, но с другой – вносит неопределенность в приложения реального времени, так как невозможно предсказать продолжительность циклов алгоритмов GC. Для поддержки приложений реального времени используются различные динамические и детерминированные методы сборки мусора, планирование потоков и другие методы очистки .

Facebook

Twitter

Вконтакте

Google+

controlengrussia.com