View
492
Download
5
Category
Preview:
DESCRIPTION
The firs
Citation preview
The Magnificent 7Платформата Java. Езикът за програмиране
Java. Първи стъпки в Java.
In Memoriam
Божидар “Master” Бацов
Цветомила “Цвети” Михайлова
Васил “Най-добрия”Сакъров
КомуникацияСайт
Пощенски списък
http://groups.google.com/group/m7-java
@bbatsov, #m7java
Facebook група
M7: Java
За курса
9 седмици
3 х 45 минути с 15 минутни почивки
(забавни) задачи за упражнение
(вълнуващ) курсов проект
финален тест
сертификат
Програмата1. Платформата
2.Основи на езика
3.ООП
4.Swing
5.Генерично програмиране
6.Колекции
7.Потоци и файлове
8.Регулярни изрази
9.Бази данни
10.Уеб
11.Модерни езици
Защо Java?
5+ млрд. устройства
1 млрд. персонални компютри
2.5 млрд. мобилни устройства
550 хил. активации на Android дневно
видео плеъри, нав. системи, мед. техника, банкови терминали
Защо Java? (част 2)
6.5 милиона разработчици
са преобладаващо в Индия ;-)
получават сериозни заплати :-)
разработват предимно уеб и enterprise приложения
разработват за мобилни устройства
If art interprets our dreams, the computer executes them in the guise of
programs!
Alan J. Perlis
Кратка история на програмирането
В началото беше асемблер
И после Бог каза... “Нека бъде Lisp!”
На седмия ден архангел Ричи каза “Ще се коди на C!”
Архангел Страуструп добави “И на С++!”
И там някъде дойде ерата на Java ;-)
Програмирането през 1995
Големите
С
С++
Lisp
Perl
Претендентите
Python
Haskell
Smalltalk
1986
Position (1986) Language
1 C
2 Ada
3 Lisp
5 C++
1996
Position Language
1 C
2 C++
3 Basic
5 Java
2006
Position Language
1 Java
2 C
3 C++
4 Basic
5 PHP
2011Position Language
1 Java2 C3 C++4 C#5 PHP6 Objective C7 Basic8 Python9 Perl10 JavaScript
2011
Other40%
PHP7%
C#7%
C++9%
C18%
Java19%
Java C C++ C# PHP Other
Силата на JavaПростота
Обектно-ориентиран
Архитектурна независимост
Портативност
Вградена мрежова поддръжка
Надеждност
Сигурност
Паралелизъм
Динамика
Простота
Базиран на С++
Изчистен синтаксис
Garbage collection
Обектно-ориентирано програмиране
Проектиран за ООП
Усъвършенстван обектен модел
Мрежова поддръжка и паралелизъм
Мрежова поддръжка
TCP/IP, HTTP, FTP
Паралелизъм
мултипроцесори
истински нишки
Надеждност
“Има указател - има проблем. Няма указател - няма проблем” - Сталин
Имаш GC, нямаш течове на памет
Сигурност
Stack overflow is a no go.
Не може да се рови в чуждата памет
Не могат да се четат файлове ей така
Преносимост
Стандартизирани типове
Вградена поддръжка на различни файлови системи
Портативни графични интерфейси
Висока производителност
Сравнима с на C(++)
Легендарни оптимизации
Just-in-time компилатор
Раждането на Java
James Gosling и неговата мечта
Проектът Green
Езикът Oak
Езикът Java
Ранните години
Власт на аплетите
Падението
Прераждане и възход
Java EE
Swing
Триумфът
номер 1 при мобилните приложения
номер 1 при enterprise приложенията
номер 1 платформа в света
ЕволюциятаВерсия Година Новости Класове
1.0 1996 самият език 2111.1 1997 Вътрешни класове 4771.2 1998 Няма 15241.3 2000 Няма 18401.4 2002 Assertions 27235.0 2004 Много и все важни :-) 32796 2006 Няма 37777 2011 Project Coin 4020
Значението на Java 7
Java все още е извор на иновация
Фокусът се прехвърля все повече към виртуалната машина
Oracle доказаха, че могат да управляват кораба
Мортал Джомбат
Java vs .Net
Java vs JavaScript
Java vs Ruby
Java vs C/C++
Java vs Scala
Java vs Lisp
Java vs .Net
C#
Супер интеграция с Уиндоус технологии
Много езици
Модулярност
Гъвкавост
Няма портативност
Затворена система
Малка общност
Малко интересни проекти
Вързана за МС
Java vs Ruby
Ruby е красив, елегантен език
Производителността му, обаче, не е много висока
JRuby е мост между Java и Ruby
Java vs JavaScript
накратко - нямат нищо общо :-)
Java vs C/C++
подобен синтаксис
подобна производителност
царуват в различни царства
Java vs Lisp
We were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp.
Guy Steele, co-author of the Java spec
Java vs Scala
ООП + Функционално програмиране = Scala
отлична поддръжка за паралелно програмиране
още по-добър обектен модел
компактен, но познат синтаксис
същата производителност
Повече от език за програмиране
Език за програмиране
Среда за изпълнение на програми (виртуална машина)
Набор от инструменти за разработка (компилатор, дебъгер, профайлър)
Стандартна библиотека
Издания на Java
Java Runtime Environment(JRE)
необходим минимум за изпълняване на Java приложения
Java Development Kit(JDK) Standard Edition
Java Enterprise Edition (JEE)
Java Micro Editon
Платформата Java
Имплементации на Java
Sun (Oracle) HotSpot VM (OpenJDK)
IBM J9
BEA (Oracle) JRockit
Apache Harmony
Google Dalvik (VM на Android)
GNU Classpath
HotSpot VM
референтна имплементация на Java
основа на свободната OpenJDK
най-подходяща за основния клас приложения (задачи)
текуща версия - 1.7.0_02
обект на настоящия курс :-)
Основни инструменти
java (стартира виртуалната машина)
javac (Java compiler)
jar (инструмент за работа с java архиви)
javaws (стартира Java Web Start)
jvisualvm (графичен инструмент, който показва данни за работата на JVM)
Мараба, Java
public class Maraba { public static void main(String[] args) { System.out.println("Maraba, Java!"); }}
От изходен код до работеща програма
Записваме изходния код във файл
Компилираме
Молим се
Стартираме
Пием по повод великия триумф
Програмистки редактор
оцветяване и форматиране на кода
интеграция с някои външни системи като shell, Version Control System...
лек и бърз
ограничени възможности за рефакториране
постен дебъгер
Големите редактори
Emacs (най-добър сред най-добрите)
vi/vim (най-добър след най-добрия)
Sublime Text 2 (най-добър след най-добрите)
TextMate (само за OS X)
jEdit (написан на Java)
Интегрирани среди за разработка
разбират семантиката на кода
интелигентен анализ на кода
надеждно рефакториране
интеграция с куп външни системи
могъщ дебъгер и профайлър
IntelliJ IDEA
най-интелигентното Java IDE
написано на Java (Swing)
изключително интелигентен анализ на кода
изключително добра поддръжка за рефакториране
Eclipse
Най-популярната среда за разработка на Java приложения
Огромна общност
Куп разширения
Лош качествен контрол
Малко иновация
NetBeans
“Стандартната” среда за разработка на Java приложения
Много добра поддръжка за Oracle-ски технологии (JSF, EJB, etc)
Изчистен интерейс
Малко разширения, лош качествен контрол
Упражнение
Инсталирайте си Oracle JDK SE 7
Конфигурирайте си пътя на изпълнение (PATH environment variable)
Изпробвайте някой от примерите от днешната лекция
Изпийте една бира/сливова за добре свършената работа
Въпроси?
The End
Recommended