Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java1_2013_2014 / java1.pptx
Скачиваний:
161
Добавлен:
16.04.2015
Размер:
158.03 Кб
Скачать

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

Соседние файлы в папке java1_2013_2014