Programowanie Użytkowe. Dr. inż. Marcin Blachnik



Podobne dokumenty
Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Programowanie w Javie cz. 1 Wstęp. Łódź, 24 luty 2014 r.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Java jako język programowania

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe zastosowanie języka Java SE

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

WPROWADZENIE DO JĘZYKA JAVA

Programowanie obiektowe

Podstawy języka Java. przygotował:

Wstęp do programowania w języku Java

Ćwiczenie 1. Przygotowanie środowiska JAVA

Java Podstawy JUST JAVA Michał Bereta Intytu Modelowania Komputerowego Wydział Fizyki, Matematyki i Informatyki Stosowanej

Java Podstawy. Michał Bereta

Wstęp do programowania w języku Java

Programowanie obiektowe. Wprowadzenie

Wykład 1: Wprowadzenie do technologii Java

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Programowanie Komponentowe WebAPI

Java EE produkcja oprogramowania

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Wstęp do programowania w języku Java

Język JAVA podstawy programowania

Autor : Mateusz Kupczyk

Język JAVA podstawy. wykład 1, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Aplikacje RMI

Tworzenie aplikacji w języku Java

Aplikacje RMI Lab4

Wstęp do programowania w języku Java

JAVA. Tomasz Grzywacz.

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

Dokumentacja aplikacji Szachy online

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych

ZSBD ćwiczenie 4. Obiektowe systemy zarządzania bazą danych. Przygotowanie środowiska pracy. Wymagania: ZSBD ćwiczenie 4

Podstawy i języki programowania

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

JavaFX. Technologie Biznesu Elektronicznego. Wydział Informatyki i Zarządzania Politechnika Wrocławska

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Dokumentacja fillup - MS SQL

Podstawy programowania. Wprowadzenie

Języki i paradygmaty programowania - 1

WPROWADZENIE DO JĘZYKA JAVA

Spis treści. 1 Java T M

JDK można pobrać ze strony

1 Atrybuty i metody klasowe

Podstawy programowania obiektowego

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

KARTA PRZEDMIOTU. Programowanie wieloplatformowe, D1_1

Programowanie w Javie

Środowiska i platformy programistyczne

Programowanie w Javie

Visual VM, Java Management extension i inne ciekawostki

Programowanie obiektowe

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Podstawy, środowisko JDK, kompilacja programów z linii poleceń

RMI-2. Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems SYSTEMY ROZPROSZONE

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Remote Method Invocation 17 listopada 2010

Programowanie współbieżne i rozproszone

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Podejście obiektowe do budowy systemów rozproszonych

Android, wprowadzenie do SDK

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Dokumentacja techniczna

Delphi podstawy programowania. Środowisko Delphi

Multimedia JAVA. Historia

Programowanie Systemów Wbudowanych

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Translacja wprowadzenie

Programowanie rozproszone w języku Java

Programowanie w Internecie. Java

Komputery przemysłowe i systemy wbudowane

1 Wprowadzenie do J2EE

TECHNOLOGIE INFORMACYJNE

Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle

Android - wprowadzenie. Łukasz Przywarty

etrader Pekao Podręcznik użytkownika Jak zacząć pracę z etrader Pekao?

PRZEWODNIK PO ETRADER PEKAO ROZDZIAŁ I. JAK ZACZĄĆ PRACĘ Z ETRADER PEKAO? SPIS TREŚCI

C# /.NET. Copyright by 3bird Projects 2018,

Swing Application Framework czyli tam i z powrotem. Copyright Piotr Kochański & Erudis,

Programowanie niskopoziomowe

Aktualizacja środowiska JAVA a SAS

weblsp Wybór przeglądarki i jej ustawienia Instrukcja ADH-Soft sp. z o.o., ul. 17 Stycznia 74, Warszawa

Programowanie obiektowe

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Transkrypt:

Programowanie Użytkowe Dr. inż. Marcin Blachnik

Literatura Internet Java Podstawy Horstmann & Cornell, Helion, Java. Techniki Zaawansowane, G.Cornell Thinking in Java., Bruce Eckel Java. Programowanie sieciowe, Harold Elliotte R.

Co to Java Java to: Język programowania Platforma programistyczna Platforma uruchamieniowa Zbiór różnych technologii

Popularność Dane wg. Tiobe Index: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Języka: Prosta Zorientowana obiektowo Bogate API Najbogatszym wsparcie różnych technologii Cechy Motto: Write once run everywhere Platforma: Wydajna Wielowątkowa Bezpieczna Przenośna Rozproszona

Filozofia Javy Kod źródłowy = pliki tekstowe z rozszerzeniem *.java Kompilacja za pośrednictwem kompilatora javac do plików *.class Pliki *.class zawierają bytecodes a nie natywny kod danego procesora!!! Aplikacja *.class uruchamiana za pomocą Java Virtual Machine = translacja kodu wewnętrznego *.class na kod maszynowy danego procesora

Java = niezależność Pliki skompilowane *.class są niezależne od systemu operacyjnego

Platforma Javy Platforma to sprzętowe lub softwareowe środowisko w którym uruchamiany jest program. Najpopularniejsze platformy: Microsoft Windows, Linux, Solaris OS, Mac OS (większość platform to kombinacja systemu operacyjnego i związanego z nim sprzętu) Platforma Javy to czysto softwareowa platforma działająca na bazie platformy sprzętowej i zewnętrznego systemu operacyjnego (choć nie koniecznie) Platforma Javy składa się z: The Java Virtual Machine The Java Application Programming Interface (API)

Platforma Javy API jest rozbudowaną kolekcją gotowego oprogramowania (bibliotek) udostępniającą wiele użytecznych funkcji. API jest zbiorem pogrupowanych klas i interfejsów; owe biblioteki nazywane są pakietami

Oferta technologii Java Narzędzia programistyczne Eclipse, NetBeans, IntelliJ, JDeveloper Application Programming Interface (API): zbiór bibliotek Technologie wdrożeniowe: JDK udostępnia technologie typu Java Web Start, Java Plug-In w celu dostarczenia aplikacji do użytkownika końcowego Narzędzia interfejsu użytkownika: AWT + Swing oraz Java 2D jako narzędzia do tworzenia GUI + SWT (The Standard Widget Toolkit) Biblioteki integrujące: Java IDL API, JDBC TM API, Java Naming and Directory Interface TM ("J.N.D.I.") API, Java RMI, Java Remote Method Invocation over Internet Inter-ORB Protocol Technology (Java RMI-IIOP Technology) udostępniają technologii dostępu do danych i zdalnego dostępu do obiektów., JNI Java Native Interface etc.

JVM Wirtualna maszyna Javy Odpowiada za konwersję bytocodu do kodu wykonywalnego Konwersja realizowana jest przez JIT (Just in time) Konwersja wieloetapowa (zwykle co najmniej 3 etapy) Etap 1 Interpreter + dodanie elementów wskaźników optymalizacyjnych Etap 2 Analiza po kompilacji do kodu natywnego Etap 3 Rekompilacja z optymalizacją w tym: Inlining kodu, optymalizacja warunków, usuwanie martwego kodu, upraszczanie kodu, etc. Uwaga na wydajność patrz: http://www.mblachnik.pl/doku.php?id=notatki:informaty ka:java

Garbage Collector GC - odśmiecacz zwalniający pamięć zajętą przez nieużywane już obiekty. Dzięki GC nowym obiektom wystarczy jedynie zaalokować pamięć i nie trzeba myśleć o zwalnianiu jej, ten proces dzieje się automatycznie przez wątek w którym działa GC. Wszystkie obiekty przechowywane są na wspólnej stercie zarządzanej, gdy są już nie potrzebne to są usuwane.

Jak działa GC Podstawowe metody: Zliczanie referencji każde stworzenie nowej referencji powoduje zwiększenie licznika referencji do danego obiektu, jeśli liczba referencji = 0 wówczas obiekt jako nie używany wyrzucany jest z pamięci. Wadą tej metody jest brak możliwości usunięcia obiektu w sytuacji w której obiekt A posiada referencję do obiektu B oraz obiekt B posiada referencję do obiektu A, wówczas w takiej sytuacji para obiektów A i B nigdy nie zostałaby usunięta. zaznacz i usuń (marge and sweep) każdy obiekt ma specjalny bit znacznika, który w momencie rozpoczęcia odśmiecania GC zeruje, następnie GC przechodzi stopniowo po strukturze obiektów od pnia w głąb i ustawia w/w bit we wszystkich obiektach które odwiedził. W końcowym etapie wszystkie obiekty z wyzerowanym bitem są usuwane jako nie podłączone.

Jak działa GC

Co jeszcze nam daje GC Problem defragmentacji - w celu rozwiązania problemu defragmentacji pamięci po wyczyszczeniu pamięci z nieużywanych obiektów następuje proces kopiowania pozostałych w pamięci obiektów w nową lokalizację tak by zawsze dostępny był pełen i spójny obszar pamięci.

Model pamięci w Javie

UWAGA na GC GC nie opiekuje się zasobami (otwieranie i zamykanie dojść do plików, zamykanie strumieni, zamykanie sesji bazy danych itp..) GC nie zwalnia nas z zasad dobrego programowania - Możliwe wycieki pamięci!!!

Uruchamianie aplikacji

Uruchamianie aplikacji Java entrypoint punkt wejścia do programu: Dowolna klasa zawierająca metodę public static void main(string[] args){} Java.exe / javaw.exe narzędzia do uruchamiania programów Uruchomienie programu poprzez podanie nazwy klasy (klasa musi zawierać metodą main) public class MojProgram { public static void main(string[] args) { System.out.println("Hello world"); } } c:\java\java.exe MojProgram Uwaga jak uruchamiamy program to musimy być we właściwym katalogu, lub też podać właściwą ścieżkę w postaci classpath

Używanie plików JAR Jeśli archiwum jar to Java.exe jar Plik.jar Co jeśli mamy kilka klas z uruchomieniowych (kilka klas z metodami public static void main(string[] args) Sami ręcznie podajemy klasę uruchamieniową np. java.exe jar Plik.jar MojProgram Więc skąd java wie którą klasę uruchomieniową odpalić? W plikach jar katalog konfiguracyjny META-INF Zawiera MANIFEST.MF ustawienia konfiguracyjne podczas uruchamiania

Używanie plików JAR Przykład Wersja MANIFEST Sposób kompilacji Manifest-Version: 1.0 Ant-Version: Apache Ant 1.8.3 Created-By: 1.7.0_05-b06 (Oracle Corporation) Class-Path: X-COMMENT: Main-Class will be added automatically by build Main-Class: randomgenerator.mainwindow Kompilator Ustawienia CLASSPATH Klasa uruchomieniowa

CLASSPATH CLASSPATH umożliwia definiowanie lokalizacji zewnętrznych bibliotek używanych w programie. Błędna konfiguracja CLASSPATH uniemożliwia poprawne działanie naszej aplikacji Możliwe sposoby definiowania: Ustawienie zmiennej środowiskowej: SET CLASSPATH= Ustawienia podczas uruchamiania java cp biblioteki lub java classpath bibl bibl = ścieżka1/biblioteka1.jar;ściezka2/biblioteka2.jar

Parametry uruchomieniowe -Xms%Rozmiar_pamięci%m początkowy rozmiar pamięci Np.. Java Xms300m MojProgram -Xmx%Rozmiar_pamięci%m maksymalny rozmiar pamięci -Dparametr=%wartość% - określenie właściwości środowiska uruchomieniowego np. Java Duser.home= c:\java MojProgram

Inne parametry -help pomoc -d32 -d64 -version jeśli możliwe wykorzystanie javy w wersji 32 bitowej Jeśli możliwe wykorzystanie javy w wersji 32 bitowej Wyświetla informacje o wersji javy (uwaga na mikrowersje) -server uruchamia javę w wersji serwer zoptymalizowaną do aplikacji serwerowych (wymaga Javt z JDK). -client Wartość domyślna, uruchamia javę w wersji klient zoptymalizowaną do aplikacji z GUI, dowolna wersja JRE -verbosegc Wyświetlenie informacji o uruchamianiu się GC -prof:java.prof Zapis danych do analizy wydajności do pliku.\java.prof. -XX:xxxx typu G1 Różne przełączniki np. -XX:+UseG1GC uruchomienie GC -XX:MaxPermSize=64m Rozmiar pamięci: permanent generation memory pool liczony w MB dla długo żyjących obiektów -XX:+UseCompressedOops Wykorzystanie skompresowanych referencji dla Javy 64bitowej jeśli XMX < 32GB mniejsze zużycie pamięci, szybsze działanie aplikacji. -XX:+UseParNewGC Wykorzystanie współbieżnego GC

UWAGA Java class format Podczas kompilacji każda klasa zawiera informację o użytym kompilatorze (wersji Javy) Jeżeli główny program uruchomiono w wersji javy M, a biblioteka jest w wersji N, tak że M<N to pojawi się błąd (ważne dla autorów aplikacji serwerowych, bo trzeba dopasować się do ustawień serwera) major minor Java platform version 45 3 1.0 45 3 1.1 46 0 1.2 47 0 1.3 48 0 1.4 49 0 1.5 50 0 1.6 Jak sprawdzić wersję klasy javap dekompilator Np.. Javap verbose MojProgram