M7: 1.The Java Platform

Preview:

DESCRIPTION

The firs

Citation preview

The Magnificent 7Платформата Java. Езикът за програмиране

Java. Първи стъпки в Java.

In Memoriam

Божидар “Master” Бацов

Цветомила “Цвети” Михайлова

Васил “Най-добрия”Сакъров

КомуникацияСайт

Пощенски списък

http://groups.google.com/group/m7-java

Twitter

@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