Transcript Java 1
Uniwersytet Łódzki
Wydział Matematyki i Informatyki,
Katedra Analizy Nieliniowej
Java 1
Wykład wstępny
mgr inż. Michał Misiak
Podstawowe informacje
mgr inż.. Michał Misiak
Konsultacje pokój 317, piątek po
wykładzie
e-mail: [email protected]
strona www: www.michalmisiak.prv.pl
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Zasady zaliczenia
Kolokwium + Projekt w ramach
laboratorium
Ocena z wykładu: 0,4 * ocena z kolokwium
+ 0,6 * ocena z projektu
Kolokwium na przedostatnich zajęciach
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Program wykładów
Podstawy języka
Przegląd klas i pakietów
Obsługa zdarzeń
Rysowanie AWT
Swing
Aplety
Programowanie współbieżne
Programowanie sieciowe
Różności (JDBC, JMF, J2ME, …)
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Prawdy i mity o Javie
Java jest techniką webową?
Java
jest bezpieczna?
Java jest niezależna od architektury?
Java jest wydajna?
Java jest prosta?
Java jest potężna?
Java jest obiektowa?
Java jest rozproszona?
Java jest interpretowana?
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java prowadzi przemysł
programistyczny
Najbardziej popularne i pożądane języki programowania
na lipiec 2007, zobacz: http://www.tiobe.com/tpci.htm
Java
C
C++
Visual Basic
PHP
Perl
C#
Python
JavaScript
Ruby
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Źródło: J2EE training: http://courses.coreservlets.com
Java jest techniką webową
Prawda! Przeglądarki WWW mogą uruchamiać
programy w Java tzw. “applety”
Sieć WWW może być wykorzystana do dostarczenia i
wykonywania aplikacji;
Nie trzeba instalować i ściągać uaktualnień aplikacji. Aplikacja
znajduje się pod konkretnym adresem, jest zasobem sieciowym;
Prawda! Biblioteki sieciowe Java są łatwe w użyciu
Przeciętny użytkownik może w łatwy sposób pisać aplikacje
sieciowe w oparciu o gniazda;
Standardowe protokoły dla systemów rozproszonych i API dla
DBMS;
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java jest techniką webową
Mit! Java jest rozwiązaniem tylko dla WWW
Aplety
Java działają w ramach stron WWW
Aplikacje Javy mogą być również stacjonarne tzw.
„stand-alone”
Java również jako aplikacja mobilna
Aktualne wykorzystanie:
Klient (applet): 5%
Aplikacja stand-alone (application): 25%
Serwer (servlets/JSP/EJB): 70%
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java jest bezpieczna
Prawda! Restrykcje na wykonywanie operacji
brak
możliwości wykonywania operacji bezpośrednio
na pamięci
Aplety standardowo zabraniają:
czytanie z dysku lokalnego;
zapisywanie na dysk lokalny;
wykonywania lokalnie programów
otwierania połączeń sieciowych innych niż HTTP
dostęp do prywatnych danych o użytkowniku (nazwa,
katalogi, zainstalowane aplikacje, etc…)
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java jest bezpieczna
Mit! Java jest zbyt bardzo restrykcyjna,
ażeby była użyteczna
Restrykcje
stosują się wyłączenie do apletów,
nie do regularnych programów Java;
Podpisy cyfrowe wspierają ograniczanie
restrykcji
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java jest niezależna od platformy
Prawda! Programy w języku Java mogą być kompilowane na „bytecode”
niezależnie od maszyny/systemu operacyjnego
(1)
Prawda! Większość systemów operacyjnych posiada implementacje
Wirtualnej Maszyny Java (JVM)
Windows, Linux, Solaris, MaxOS, …
Mit! Bezpieczeństwo i przenośność może być osiągnięta bez straty
wydajności
Obecnie programy napisane w języku Java są ok.. 20% wolniejsze niż w C++
Kolejne wersje JVM dążą do zwiększenia lub wyeliminowania start wydajności
Najprawdopodobniej różnice w wydajności pomiędzy aplikacjami w C++, a w
Java pozostanie na poziomie ok. 10%
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
(1) http://java.sun.com/docs/books/tutorial/getStarted/intro/definition.html
Java jest niezależna od platformy
Mit! Java jest wyłącznie interpretowana
Wcześniejsze wersje były interpretowane, aktualnie wiele JVM wspiera
JIT mechanizm „Just-In-Time”
Przykład kompilatora Javy bezpośrednio do języka maszynowego: The
GNU Compiler for the Java Programming Language
Mit! Napisz raz uruchom gdziekolwiek (Write Once Run Anywhere)
Kod przenoszalny może być bardzo łatwo uzyskany natomiast musi być
przetestowany na platformach, na których ma być używany
Aplikacje w języku Java mogą wykonywać lokalny kod
Graficzne biblioteki zachowują się trochę inaczej na różnych
platformach
Obsługa wykonywania wątków jest bardzo luźno zdefiniowana
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java jest prosta
Prawda! Java wspaniale upraszcza niektóre
funkcjonalności języków programowania
Java
dysponuje automatycznym zarządzaniem
pamięcią (Garbage Collector).
Brak wskaźników oznacza brak niebezpieczeństwa
wycieków pamięci. Nie ma bezpośrednich operacji na
wskaźnikach
Nie wykorzystuje się plików „makefile”
Nie potrzeba plików nagłówkowych
Wbudowane zarządzanie wielowątkowością
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java jest potężna
Prawda! Java posiada duży zbiór standardowych bibliotek:
obsługa sieci: URL (Uniform Resource Locator), gniazdka TCP i UDP,
adres IP, RMI, …
Komponenty programistyczne: beans
wielowątkowość (lekkie procesy)
rozproszone obiekty: CORBA, JNDI, …
obsługa baz danych: JDBC
Grafika: sterowanie GUI i rysowanie grafiki
Biblioteki z gotowymi strukturami danych
Bezpieczeństwo: Podpisy cyfrowe, kontrola i sterowanie dostępem do
zasobów, certyfikaty
Serializacja (przesyłanie struktur danych)
Kompresja strumieni i plików
Parsowanie XML
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java 2 Standard Edition
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Pakiety Javy
Główne pakiety:
JDBC
RMI
JavaBeans
Swing
Java 2D
Standardowe rozszerzenia
Serwlety i JavaServer Pages
Enterprise Java Beans (i JNDI)
Java 3D
Java JMF
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java Data Base Connectivity
(JDBC)
Standardowy mechanizm do podłączania się do serwerów
bazodanowych
Standardowy mechanizm wykonywania zapytań bazodanowych
Również regularne jak i parametryzowane zapytania do DB
Standaryzowany struktury danych do przechwytywania rezultatów
zapytań
Wymaga wyłączenie specyficznych sterowników dla serwera po stronie
klienta. Nie trzeba nic zmieniać po stronie serwera
założeniem są relacyjne bazy danych, struktury danych jako tabele
Nie definiuje składni SQL
Zapytania SQL są ciągiem znaków
Wspieranie rozszerzeń serwera bazodanowego
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Remote Method Invocation
Wbudowany protokół obiektów rozproszonych
RMI pozwala programistom na dostęp do obiektów Javy i sterowanie nimi w
normalny sposób. Funkcje mogą być wywoływane na zdalnym obiekcie przez
sieć
Struktury danych mogą być przesyłane przez sieć dzięki mechanizmowi
serializacji
Podobny do mechanizmu CORBA, ale komunikacja wyłącznie Java-Java
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
JavaBeans „Fasolki”
Pozwala organizować kod programu jako
komponenty, które mogą być wielokrotnie
wykorzystywane
Graficzne IDE umożliwiają modyfikację i
manipulowanie „fasolkami” bez konieczności
wnikania w ich strukturę. Konstrukcja programu
techniką „drag-and-drop”
Bezpieczniejsze i bardziej przenośne niż
komponenty ActiveX
Możliwość umieszczenia stworzonych wcześniej
fasolek w narzędziach tj. JBuilder, Sun
JavaWorkshop, NetBeans, IBM VisualAage, etc
…
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Swing
Podstawowa bibliotek do budowy GUI w Java 2
duży
zbiór wbudowanych kontrolek
duża elastyczność i konfigurowalność
zawiera przydatne kontrolki w tworzeniu aplikacji
komercyjnych: tzw. tooltips, tabbed panes, dokowalne
menu, wielodokumentowe interfejsy, wspieranie
HTML, etc…
Modyfikowalność wyglądu za pomocą tzw. look and
feel. Można zmieniać w trakcie działania aplikacji.
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Java 2D
Standardowa biblioteka do rysowania w Java 2
Standardowa architektura do łatwego rysowania
obiektów 2D (struktury danych: kształty, płótno,
pędzle, kolor, etc…)
Wiele przydatnych funkcjonalności :
Wypełnianie
wzorcami i obrazami
Stosowanie różnych czcionek
Wybór różnych grubości i wzorów piór
Miksowanie kolorów, zmiana przeźroczystości
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Różności Javy
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Konfiguracja oprogramowania wymaganego i
pomocnego przy tworzeniu aplikacji w Javie
Należy zainstalować Java (aktualnie dostępna
Java w wersji 6!) Najlepiej jednak użyć wersji
JDK (Java Development Kit) 5:
http://java.sun.com/j2se/1.5.0/download.jsp
Pobrać
J2SE (Stanard Edition), nie J2EE! (Enterprise
Edition)
Pobrać JDK, nie tylko JRE
Ustawić zmienną środowiskową classpath
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Dokumentacja
Sukcesem w programowaniu w Javie jest
umiejętność posługiwania się
dokumentacją:
http://java.sun.com/j2se/1.4.2/docs/api/
Istnieje również szereg dobrych tutoriali:
The
Java Tutorials:
http://java.sun.com/docs/books/tutorial/
http://www.apl.jhu.edu/~hall/java/
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Środowisko programowania
Eclipse (http://www.eclipse.org)
Eclipse IDE for Java Developers
Eclipse IDE for Java EE Developers
Netbeans (http://www.netbeans.org)
NetBeans Mobility 5.5.1 ML
NetBeans CDC
NetBeans Visual Web Pack 5.5.1
NetBeans Profiler
JBuilder (http://www.borland.com)
JCreator (www.jcreator.com)
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Eclipse
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Netbeans
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Literatura
Core Java 2 Podstawy
Java 2 Techniki Zaawansowane
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007
Pytania ?
Wydział Matematyki i Informatyki UŁ, Katedra Analizy Nieliniowej © 2007