Программа работает только на той платформе, под которую она скомпилирована




Скачать 28.97 Kb.
PDF просмотр
НазваниеПрограмма работает только на той платформе, под которую она скомпилирована
Дата конвертации21.08.2013
Размер28.97 Kb.
ТипПрограмма
Введение в Java
Алексей Владыкин
12 сентября 2012
Алексей Владыкин
Введение в Java
12 сентября 2012
1 / 33

1
История и эволюция Java
2
Особенности Java
3
Разновидности Java
4
Экосистема Java
5
Язык Java
6
Стандартный инструментарий
Алексей Владыкин
Введение в Java
12 сентября 2012
2 / 33

История и эволюция Java
1
История и эволюция Java
2
Особенности Java
3
Разновидности Java
4
Экосистема Java
5
Язык Java
6
Стандартный инструментарий
Алексей Владыкин
Введение в Java
12 сентября 2012
3 / 33

История и эволюция Java
1991 внутренний проект Sun Microsystems по созданию платформы для
разработки встраиваемых систем — Green Project;
вместо C++ решили создать новый язык, названный Oak
1992 первое демонстрационное устройство на новой платформе —
PDA Star7
1993 попытка занять нишу ТВ-приставок для кабельного телевидения
1994 фокус на разработке интерактивных приложений (апплетов) для
веб-страниц;
язык переименован в Java
1996 Java Development Kit 1.0
Алексей Владыкин
Введение в Java
12 сентября 2012
4 / 33

История и эволюция Java
1996 Java Development Kit 1.0
1997 JDK 1.1
1998 J2SE 1.2, «Java 2», разделение на ME/SE/EE
2000 J2SE 1.3
2002 J2SE 1.4
2004 J2SE 5.0, изменение нумерации
2006 Java SE 6, уход от понятия «Java 2»
2011 Java SE 7
2013 Java SE 8
Алексей Владыкин
Введение в Java
12 сентября 2012
5 / 33



История и эволюция Java
Алексей Владыкин
Введение в Java
12 сентября 2012
6 / 33

Особенности Java
1
История и эволюция Java
2
Особенности Java
3
Разновидности Java
4
Экосистема Java
5
Язык Java
6
Стандартный инструментарий
Алексей Владыкин
Введение в Java
12 сентября 2012
7 / 33

Особенности Java
Виртуальная машина и байткод
Подход C/C++:
исходный код → машинный код → процессор
программа работает только на той платформе,
под которую она скомпилирована
Подход Java:
исходный код → байткод виртуальной машины
→ виртуальная машина → процессор
программа работает на любой платформе,
где есть виртуальная машина Java
“Write once, run anywhere!”
Алексей Владыкин
Введение в Java
12 сентября 2012
8 / 33

Особенности Java
Виртуальная машина и байткод
Как быстро работает виртуальная машина?
Интерпретация байткода на порядок (10–20 раз) медленнее
исполнения аналогичного машинного кода. . .
но есть Just-In-Time компиляция
виртуальная машина компилирует байткод в машинный код
используется с JDK 1.1
а также HotSpot
адаптивный оптимизирующий JIT-компилятор
используется с JDK 1.3
в результате Java 7 всего в 1.5–2 раза медленнее C,
а в некоторых тестах не хуже или даже быстрее!
Алексей Владыкин
Введение в Java
12 сентября 2012
9 / 33

Особенности Java
Сборка мусора
Подход C/C++:
выделил память → поработал → освободил память
всё управление памятью в руках программиста
Подход Java:
выделил память → поработал → забыл
виртуальная машина считает ссылки на каждый объект
освобождает память, когда ссылок больше нет
Алексей Владыкин
Введение в Java
12 сентября 2012
10 / 33

Особенности Java
Безопасность
Верификация байткода
некорректный байткод будет отвергнут перед исполнением
Автоматическое управление памятью
нет арифметики указателей
невозможно испортить память
Встроенный механизм управления правами
можно запустить код в «песочнице» без доступа к файлам, к сети,
без возможности создавать потоки и т. п.
Алексей Владыкин
Введение в Java
12 сентября 2012
11 / 33

Особенности Java
Многопоточное и распределенное программирование
Многопоточность
встроенная поддержка потоков
богатая библиотека примитивов синхронизации
Распределенность
встроенные сетевые возможности
пересылка данных и объектов по сети
работа с удаленными объектами (RMI)
Алексей Владыкин
Введение в Java
12 сентября 2012
12 / 33

Разновидности Java
1
История и эволюция Java
2
Особенности Java
3
Разновидности Java
4
Экосистема Java
5
Язык Java
6
Стандартный инструментарий
Алексей Владыкин
Введение в Java
12 сентября 2012
13 / 33

Разновидности Java
JRE/JDK
Java Runtime Environment (JRE)
виртуальная машина и стандартная библиотека классов для
запуска скомпилированных программ
Java Development Kit (JDK)
набор инструментов для разработчиков (компилятор),
включает в себя JRE
Алексей Владыкин
Введение в Java
12 сентября 2012
14 / 33

Разновидности Java
Редакции Java
Standard Edition (SE)
Micro Edition (ME)
подмножество SE + специфические библиотеки
Enterprise Edition (EE)
SE + дополнительные библиотеки и возможности
Java Card
сильно урезанная версия SE, изменения в виртуальной машине
Алексей Владыкин
Введение в Java
12 сентября 2012
15 / 33

Разновидности Java
Реализации Java
Oracle Java
http://java.oracle.com/
OpenJDK
http://openjdk.java.net/
IcedTea
http://icedtea.classpath.org/
IBM J9
Apache Harmony (retired)
еще несколько десятков
Алексей Владыкин
Введение в Java
12 сентября 2012
16 / 33

Экосистема Java
1
История и эволюция Java
2
Особенности Java
3
Разновидности Java
4
Экосистема Java
5
Язык Java
6
Стандартный инструментарий
Алексей Владыкин
Введение в Java
12 сентября 2012
17 / 33

Экосистема Java
Библиотеки
Библиотеки общего назначения
Apache Commons Lang, Google Guava, Joda Time, . . .
Библиотеки для логирования
Apache Log4J, SLF4J, LogBack, . . .
Библиотеки для модульного тестирования
JUnit, TestNG, Mockito, JMock, Hamcrest, . . .
Библиотеки для работы с байткодом
ASM, BCEL, Javassist, . . .
Алексей Владыкин
Введение в Java
12 сентября 2012
18 / 33

Экосистема Java
Системы сборки
Apache Ant
Императивное описание сборки
Apache Ivy
Управление зависимостями для Ant
Apache Maven
Декларативное описание сборки и управление зависимостями
Алексей Владыкин
Введение в Java
12 сентября 2012
19 / 33

Экосистема Java
Среды разработки
Eclipse IDE
IntelliJ IDEA
NetBeans IDE
Подсветка синтаксиса
Автодополнение, гиперссылки
Рефакторинг
Интерактивный отладчик
Алексей Владыкин
Введение в Java
12 сентября 2012
20 / 33

Экосистема Java
Альтернативные языки
Groovy, Kotlin, Scala
Clojure
Диалект LISP
JRuby
Реализация Ruby на JVM
Jython
Реализация Python на JVM
Алексей Владыкин
Введение в Java
12 сентября 2012
21 / 33

Язык Java
1
История и эволюция Java
2
Особенности Java
3
Разновидности Java
4
Экосистема Java
5
Язык Java
6
Стандартный инструментарий
Алексей Владыкин
Введение в Java
12 сентября 2012
22 / 33

Язык Java
HelloWorld.java
p u b l i c c l a s s H e l l o W o r l d {
p u b l i c s t a t i c v o i d main ( S t r i n g [ ]
a r g s ) {
System . o u t . p r i n t l n ( " H e l l o w o r l d ! " ) ;
}
}
Java Coding Conventions
http://www.oracle.com/technetwork/java/codeconv-138413.html
Алексей Владыкин
Введение в Java
12 сентября 2012
23 / 33

Язык Java
HelloWorldWithComments.java
/* *
* P r i n t s " H e l l o w o r l d ! " and t e r m i n a t e s .
* @ a u t h o r A l e x e y V l a d y k i n
*/
p u b l i c c l a s s HelloWorldWithComments {
/* C a n o n i c a l e x a m p l e program s i n c e 1 9 7 8 ,
many t h a n k s t o K&R : ) */
p u b l i c s t a t i c v o i d main ( S t r i n g [ ]
a r g s ) {
// t o d o : i 1 8 n
System . o u t . p r i n t l n ( " H e l l o w o r l d ! " ) ;
}
}
Алексей Владыкин
Введение в Java
12 сентября 2012
24 / 33

Язык Java
PrintArguments.java
p u b l i c c l a s s P r i n t A r g u m e n t s {
p u b l i c s t a t i c v o i d main ( S t r i n g [ ]
a r g s ) {
f o r ( i n t i = 0 ; i < a r g s . l e n g t h ; ++i ) {
System . o u t . p r i n t l n ( " a r g s [ "+i +" ] = "+a r g s [ i ] ) ;
}
}
}
Алексей Владыкин
Введение в Java
12 сентября 2012
25 / 33

Язык Java
BottlesOfBeer.java
p u b l i c
c l a s s
B o t t l e s O f B e e r {
p u b l i c
s t a t i c
v o i d main ( S t r i n g
a r g s [ ] )
{
i n t k = 9 9 ;
w h i l e ( k > 0 ) {
S y s t e m . o u t . p r i n t f (
"%d b o t t l e%s o f
b e e r on t h e w a l l , \ n " +
"%d b o t t l e%s o f b e e r , \ n " +
" t a k e one down ,
p a s s
i t
a r o u n d , \ n " +
"%d b o t t l e%s o f
b e e r on t h e
w a l l . \ n \ n " ,
k ,
( ( k != 1 ) ? " s " : " " ) ,
k ,
( ( k != 1 ) ? " s " : " " ) ,
−−k ,
( ( k != 1 ) ? " s " : " " )
) ;
}
S y s t e m . o u t . p r i n t l n ( "No more b o t t l e s
o f
b e e r on t h e
w a l l ! " ) ;
}
}
Алексей Владыкин
Введение в Java
12 сентября 2012
26 / 33

Стандартный инструментарий
1
История и эволюция Java
2
Особенности Java
3
Разновидности Java
4
Экосистема Java
5
Язык Java
6
Стандартный инструментарий
Алексей Владыкин
Введение в Java
12 сентября 2012
27 / 33

Стандартный инструментарий
javac
Java Compiler
Компилирует исходный код (*.java) в байткод (*.class)
javac
MyClass.java
YetAnotherClass.java
javac
-d classes
MyClass.java
javac
-classpath library.jar
-d classes
MyClass.java
javac
-version
Алексей Владыкин
Введение в Java
12 сентября 2012
28 / 33

Стандартный инструментарий
Отступление: о classpath
Все используемые классы должны быть доступны в classpath
Всегда содержит классы стандартной библиотеки
(jre/lib/rt.jar)
По умолчанию содержит текущую директорию «.»
Задается как список директорий и/или JAR-файлов
Разделитель списка
«:» в Unix/Linux/Mac OS X
«;» в Windows
Алексей Владыкин
Введение в Java
12 сентября 2012
29 / 33

Стандартный инструментарий
java
Java Virtual Machine
Исполняет байткод
Главный класс должен иметь метод
public static void main(String [] args )
java
MyClass
java
-classpath classes_dir;library.jar
MyClass
java
-jar library_with_main_class.jar
java
-version
Алексей Владыкин
Введение в Java
12 сентября 2012
30 / 33

Стандартный инструментарий
Отступление: о MANIFEST.MF
Любой JAR-файл содержит META-INF/MANIFEST.MF
Пример:
M a n i f e s t −V e r s i o n : 1 . 0
C r e a t e d −By : 1 . 6 . 0 _35 ( Sun M i c r o s y s t e m s I n c . )
Можно получить доступ к манифесту из программы
Main-Class — имя класса с методом main
Class-Path — список необходимых JAR’ов, через пробел
Алексей Владыкин
Введение в Java
12 сентября 2012
31 / 33

Стандартный инструментарий
jar
Java Archive Tool
Создает и распаковывает JAR-файлы
jar
cf
library.jar
-C classes_dir
.
jar
cfm
library.jar
manifest.mf
-C classes_dir
.
jar
tf
library.jar
jar
xf
library.jar
Алексей Владыкин
Введение в Java
12 сентября 2012
32 / 33

Что сегодня узнали
Что такое Java и с чем её едят
В чем особенности Java и отличия от C/C++
Как выглядят программы на Java
Как собрать программу на Java
Как запустить программу на Java
Алексей Владыкин
Введение в Java
12 сентября 2012
33 / 33

Document Outline

  • История и эволюция Java
  • Особенности Java
  • Разновидности Java
  • Экосистема Java
  • Язык Java
  • Стандартный инструментарий


Похожие:

Программа работает только на той платформе, под которую она скомпилирована iconПрограмма не нуждается в инсталляции и работает в той папке, в которую вы ее поместите
Если сканы имеют такие  недостатки, как черные поля, двойной разворот и тому подобное, то для их исправления можно воспользоваться...
Программа работает только на той платформе, под которую она скомпилирована iconИнструкция по установке
Внимание: программное обеспечение для ildvr работает только на платформе intel с операционной системой Windows 
Программа работает только на той платформе, под которую она скомпилирована iconНо программа, которую представили мастера под 

Программа работает только на той платформе, под которую она скомпилирована iconЗона I это участок, расположенный в непосредственной близости от дома, она начинается сразу за кухонной дверью и включает огород с однолетниками, небольшие по
Это зона, которую мы посещаем ежедневно, она наиболее интенсивно засаживается растениями и находится под постоянным наблюдением
Программа работает только на той платформе, под которую она скомпилирована iconВиктор Григорьевич Заводинский Институт материаловедения хнц дво ран оглавление Введение 2 Основные подходы 8
Однако наукой она становится только тогда, когда на основе эмпирических фактов рождаются теоретические выводы, облеченные в математическую...
Программа работает только на той платформе, под которую она скомпилирована iconБолезнь,  которую можно  контролировать можешь только 
Под редакцией проф., доктора мед наук, члена­корреспондента раен с. Ю. Марцевича
Программа работает только на той платформе, под которую она скомпилирована iconMorpheus/  – 
...
Программа работает только на той платформе, под которую она скомпилирована iconПрограмма бесплатная, работает в window и linux. Устанавливается легко, занимает мало места, без вебкамеры и микрофона работает в текстовом режиме. Войдя на

Программа работает только на той платформе, под которую она скомпилирована iconПрограмма бесплатная, работает в window и linux. Устанавливается легко, занимает мало места, без вебкамеры и микрофона работает в текстовом режиме. Войдя на

Программа работает только на той платформе, под которую она скомпилирована iconЛюбовь, которую она жаждет больше всего
Единение — она хочет близости . . . . . . . . . . . . . . . . . . . . . . . . 150
Разместите кнопку на своём сайте:
kak.znate.ru


База данных защищена авторским правом ©kak.znate.ru 2012
обратиться к администрации
KakZnate
Главная страница