
- •JAVA-ТЕХНОЛОГИЯ
- •Литература
- •Предыстория Java
- •История Java
- •Новая версия Java (сентябрь 2013)
- •Java 1.7: наиболее важные новые возможности
- •Планы Java 8 (2013-2014)
- •Java и Oracle
- •Основные особенности Java
- •Области применения Java
- •Основные понятия Java
- •Первая программа на Java (исполняемый класс)
- •Компиляция и выполнение (интерпретация) Simple с помощью JDK
- •Инструменты программирования на Java
- •Сертификация реализаций Java и “Java War”
- •Виды Java-приложений
- •Java и Microsoft.NET
- •Развитие Java-технологии: Java Community Process (JCP)
- •Ваше участие в развитии Java API и Java-технологии

JAVA-ТЕХНОЛОГИЯ
Сафонов Владимир Олегович
Профессор кафедры информатики, руководитель лаборатории Java- технологии (http://polyhimnie.math.spbu.ru/jtl)
Email: vosafonov@gmail.com
Лекция 1

Литература
2
1. Арнольд К., Гослинг Дж., Холмс Д.
Язык программирования Java. 3-e издание. – Издательский дом “Вильямс”, 2001.
2. Сафонов В.О. Введение в Java-технологию. - Санкт- Петербург,“Наука”, 2002
3. Сафонов В.О. Введение в Java-технологию. – Lambert Academic Publishers, Germany, 2011
4. Сафонов В.О. Язык программирования Java (июнь 2007): Материалы курса на сайте Sun
http://ru.sun.com/teachingmaterials.html,
5. Ноутон П., Шилдт Г. Java 2. – Санкт-Петербург, BHV, 2000.
6. Морган М. Java 2. Руководство разработчика. – SAMS,
2000.
7. http://java.com
8. http://www.jcp.org
9. http://java.net
(C) В.О. Сафонов. 2013

Предыстория Java
3
Java-технология – “вершина айсберга”
В основе Java – идеи ООП, абстрактных типов данных, модульного программирования
1967: У.Дал, К.Нюгорд (Норвегия)
Язык Симула-67: классы, объекты, наследование, виртуальные функции, атрибуты (поля), параметры классов
1970: Д.Ритчи, Б.Керниган
Язык C: синтаксис, управляющие конструкции
1974: Б. Лисков (в 2009 г. удостоена Премии А. Тьюринга)
Язык CLU: объектные ссылки, абстрактные типы данных, параметризованные типы (generics), итераторы
1984: Б.Страуструп
Язык C++ (первоначально – “C with classes”) : Расширение языка C понятием класса из Симула-
671991: Язык Модула-3:
Использование интерфейса как обозначения типа
(C) В.О. Сафонов. 2013

История Java
4
|
1991 |
Дж.Гослинг, Sun Microsystems, Inc. : Объектно-ориентированный |
|
язык Oak (“дуб”) для разработки встроенных систем |
|
|
1995 |
Язык Java (развитие Oak). Публичное объявление и первая |
|
реализация Java - Java Development Kit (JDK) JDK 1.0, чистая интерпретация |
|
|
Java-байткода |
|
|
1997 |
JDK 1.1 : Новая модель событий, Java Beans, вложенные классы, |
|
Swing, Just-in-Time (JIT)-компилятор (идея JIT принадлежит компании Xerox |
|
|
PARC, 1992) |
|
|
1998 |
Java 2 platform: JDK 1.2, JDK 1.3; Java 2 editions: J2SE, J2ME, J2EE |
|
2002-2004: assertions (JDK 1.4) |
|
|
2005 |
: 10-летие Java; J2SE 5.0 (“Tiger”); NetBeans 4.1. |
|
Новые возможности: generics, typesafe enums, annotations; boxing/unboxing; |
|
|
static import; varargs; |
|
|
новый API для параллельного выполнения (concurrency) |
|
|
2005: Sun выложила на сайт исходные тексты JDK; проект OpenJDK |
|
|
2007: Java 1.6 – изменений в языке нет; реализованы дополнительные Look- |
|
|
and-feels (Ocean, Windows Vista) |
|
|
2008: Технология JavaFX для разработки Rich Internet Applications |
|
|
2008: Java 1.7 – планируется много изменений в языке Java |
|
|
Java 1.5 и 1.6 – значительно сложнее, чем Java 1.x (теряется |
|
|
концептуальная чистота и простота): это следствие конкуренции с .NET |
|
|
2009, август: JDK 1.7 Early Access (затем был заморожен) |
|
|
2010, июль: JDK 1.6 Update 21 |
|
|
2013 |
, сентябрь: JDK 1.7 Update 25 (усилена безопасность) |
|
Модули (проект jigsaw), по-видимому, будут отложены с Java 8 до Java 9 |
(C) В.О. Сафонов. 2013

Новая версия Java (сентябрь 2013)
5
(C) В.О. Сафонов. 2013

JDK 1.6
6
2006-2009: JDK 1.6 (“Mustang”) – в настоящее время JDK 1.6 update 21
Новые возможности:
JSR 105: XML Digital Signature
JSR 199: Java Compiler API
JSR 202: Java Class File Specification Update
JSR 221: JDBC 4.0
JSR 222: JAXB 2.0
JSR 223: Scripting for the Java Platform
JSR 224: JAX-RPC 2.0
JSR 260: Javadoc Tag Update
JSR 268: Java Smart Card I/O API
JSR 269: Pluggable Annotation Processing API
(C) В.О. Сафонов. 2013

Java 1.7: наиболее важные новые возможности
7
Поддержка “единобайткодных” реализаций динамических языков (Ruby, Python и др.)
Среди их возможностей наиболее важна возможность динамического (во время выполнения) изменения структуры объекта – добавление новых полей и методов
Для этой цели в JVM в Java 7 введена специальная новая виртуальная команда invokedynamic
Новые возможности параллелизма: эффективный пул
потоков (thread pool), управляемых синхронизирующими
примитивами типа fork/join. В .NET аналогичные возможности введены несколько лет назад
(C)В.О. Сафонов. 2013

Планы Java 8 (2013-2014)
8
Оптимизация и ускорение работы JVM и сборщика мусора
Механизм модулей, обеспечивающих независимую выборочную загрузку в JVM и выгрузку из нее взаимосвязанных групп классов (без необходимости загружать при каждом запуске JVM все стандартные классы). Это позволит сэкономить память и значительно улучшить производительность Java-программ (видимо, будут отложены до Java 9 – 2013-14 г.)
(C)В.О. Сафонов. 2013

Java и Oracle
9Oracle – новый владелец Java-технологии
Oracle поддерживает Java
Oracle имеет собственную реализацию Java (виртуальная машина JRockIt)
Oracle работает над интеграцией реализаций Java Oracle и Sun с целью улучшения производительности Java- приложений
Вице-президент Oracle (апрель 2010): “Самое главное для нас в Java-технологии – модульность и стабильность” (?!)
Реализуется поддержка модульного программирования в Java (возможность загрузки в VM и выгрузки из VM группы классов как единого модуля)
Oracle поддержал проект openJDK; все новые версии Java (Java 7, Java 8, …) будут выпускаться на основе результатов openJDK
(C)В.О. Сафонов. 2013

Основные особенности Java
10
Java – чисто объектно-ориентированный язык
Синтаксис Java основан на синтаксисе C / C++
Независимость от платформы (архитектуры) :
Write once, run anywhere (WORA)
Реализация Java:
-компиляция в байт-код (bytecode);
-интерпретация / динамическая (Just-in-Time) компиляция с помощью Java Virtual Machine (JVM) и JIT-компилятора;
-динамическое профилирование и оптимизация/деоптимизация с помощью Java HotSpot
Многопоточность (multi-threading)
Строгая типизация
Динамизм: динамическая загрузка классов; анализ типов и классов (reflection API)
Поддержка программирования для Internet (applets, servlets, Web Services)
Поддержка работы с XML
Уникальные по разнообразию и мощности библиотеки (API)
Недостатки Java-технологии:
до сих пор – недостаточно высокая производительность (несмотря на оптимизации JIT-компилятора и HotSpot) ; медленный старт больших приложений
большой объем памяти, используемый Java-продуктами
(C) В.О. Сафонов. 2013