Tytuł szkolenia: Tworzenie wydajnego oprogramowania w języku Java - techniki zaawansowane

Podobne dokumenty
Tytuł szkolenia: Tworzenie wydajnego oprogramowania w języku Java - techniki zaawansowane

Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego Łódź. Java podstawy języka, wykład 4 1

Programowanie obiektowe

Zaawansowane programowanie w języku C++

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

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

Programowanie w języku Java (OCA+OCP)

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

java.util.* :Kolekcje Tomasz Borzyszkowski

Projektowanie rozwiązań Big Data z wykorzystaniem Apache Hadoop & Family

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Kolekcje. Na podstawie:

Tytuł szkolenia: Angular 4 - budowanie nowoczesnych i wydajnych aplikacji przeglądarkowych

Podstawy otwartych języków programowania Przechowywanie danych

Programowanie w języku Java. Kolekcje

Praktyczne zastosowanie bibliotek Boost oraz nowego standardu C++11

Java Collections Framework

Architektura mikroserwisów na platformie Spring IO

Podstawy analizy danych numerycznych w języku Python

Dni: 2. Partner merytoryczny. Opis: Adresaci szkolenia

Kolekcje - pakiet Java Collections Framework

Kolekcje mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Powinieneś: mieć doświadczenie w programowaniu w języku Java znać podstawy zarządzania pamięcią w wirtualnej maszynie

SZKOLENIE. Programowanie w języku Java. tel.: ; fax: ,

Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór.

Programowanie w języku Java 7 z biblioteką SWING

Modelowanie procesów biznesowych, przepływu pracy i wdrażanie aplikacji w oparciu o Jboss jbpm lub Activiti

Programowanie w języku Java dla programistów. Szkolenie adresowane jest do programistów, pragnących poznać język Java.

Projektowanie i implementacja wysokowydajnych aplikacji w języku

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Kolekcje - pakiet Java Collections Framework

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Korporacyjna Magistrala Usług na przykładzie Mule ESB

Programowanie Obiektowe (Java)

Programowanie.NET - kurs zaawansowany

Programowanie w języku Java (przygotowanie do zawodu)

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

Struktury systemów operacyjnych

Podstawy programowania. Wprowadzenie

Język programowania C C Programming Language. ogólnoakademicki

Podstawy i języki programowania

Java Persistence API - zagadnienia zaawansowane

HP Matrix Operating Environment Foundations

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

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

Zmiana specyfikacji istotnych warunków zamówienia

Dni: 5. Opis: Adresaci szkolenia

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

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

VMware vsphere 5.5: Install, Configure, Manage

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Korporacyjna Magistrala Usług na przykładzie Oracle Service Bus

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

Java jako język programowania

Programowanie w Javie nazwa przedmiotu SYLABUS A. Informacje ogólne

SZKOLENIE TWORZENIE SYSTEMÓW

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

Programowanie obiektowe. Wprowadzenie

Aplikacje Internetowe, Servlety, JSP i JDBC

Biorąc udział w projekcie, możesz wybrać jedną z 8 bezpłatnych ścieżek egzaminacyjnych:

Programowanie obiektowe

Visual VM, Java Management extension i inne ciekawostki

Dni: 3. Opis: Adresaci szkolenia

Historia modeli programowania

Referat pracy dyplomowej

Podstawy programowania obiektowego

Programowanie obiektowe 1 - opis przedmiotu

Lista, Stos, Kolejka, Tablica Asocjacyjna

Rok akademicki: 2015/2016 Kod: JIS s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

GUI - projektowanie interfejsów cz. II

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) stacjonarne (stacjonarne / niestacjonarne)

VMware View: Desktop Fast Track [v5.1] Dni: 5. Opis: Adresaci szkolenia

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Tworzenie oprogramowania

Program szkolenia: Zaawansowane programowanie w C++

Kolekcje. object that groups multiple elements into a single unit

Program szkolenia: Continuous Integration i Git

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Języki i metody programowania Java INF302W Wykład 3 (część 2)

Programowanie MorphX Ax

Programowanie obiektowe Object programming. Elektrotechnika II stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

Podstawy języka Java. przygotował:

Kompletna dokumentacja kontenera C++ vector w -

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Modelowanie procesów biznesowych, przepływu pracy oraz reguł biznesowych na przykładzie Drools i jbpm lub Activiti

Dokumentacja aplikacji Szachy online

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

VMware vsphere: Automation Fast Track

Tworzenie aplikacji na platformie Android

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Język Java i technologie Web - opis przedmiotu

Programowanie obiektowe zastosowanie języka Java SE

Java : podstawy / Java Cay S. Horstmann. Gliwice, cop Spis treści

Transkrypt:

Kod szkolenia: J/ADV Tytuł szkolenia: Tworzenie wydajnego oprogramowania w języku Java - techniki zaawansowane Dni: 5 Opis: Adresaci Szkolenia: Szkolenie jest adresowane do programistów języka Java, którzy chcą poznać sekrety tworzenia wydajnego oprogramowania w tym języku. Cel szkolenia: Celem szkolenia jest obycie się z praktykami tworzenia wydajnego oprogramowania w Java, poprzez tworzenie benchmark'ów i badanie wydajności, profilowanie aplikacji, używanie struktur danych odpowiednich do trybu pracy, wydajny dostęp do plików i przede wszystkim obalenie błędnych mitów dotyczących pracy Garbage Collector'a. Wielu programistów Java posiadających nawet wieloletnie doświadczenie nie zdaje sobie sprawy z tego jakie grzechy popełnia próbując pomagać wirtualnej maszynie Java, czy Garbage Collector'owi, w rezultacie otrzymując efekt przeciwny do zamierzonego. To szkolenie obala te mity i uczy prawdziwych praktyk tworzenia wydajnego oprogramowania w Javie. A także jak zwiększyć wydajność aplikacji bez dotykania samego kodu, czyli profilowanie JVM i GC. Uczestnik szkolenia uczy się również używania zaawansowanych elementów języka takich jak refleksja, introspekcja czy dynamiczne proxy. Wymagania: Od uczestników wymagana jest umiejętność programowania w języku Java. Parametry szkolenia: 5*8 godzin (5*7 godzin netto) wykładów i warsztatów (z wyraźną przewagą warsztatów). W trakcie warsztatów, odnajdywane są wąskie gardła aplikacji, badane aspekty wydajnościowe różnych struktur danych i sposobów dostępu do dysku, a także ćwiczone zaawansowane aspekty języka Java. Wielkość grupy: maks. 8-10 osób. Program szkolenia:

1. Tworzenie wydajnego oprogramowania I. Różne wymiary wydajności i. Wydajność obliczeniowa ii. Wydajność pamięciowa (RAM footprint) iii. Wydajność uruchomienia iv. Wydajność skalowania II. Wydajność a użytkownik - subiektywne odczucie wydajności III. Proces tworzenia wydajnego oprogramowania i. Analiza wydajności ii. Projektowanie a wydajność iii. Architektura a wydajność iv. Kodowanie a wydajność v. Testowanie a wydajność vi. Profilowanie a wydajność IV. Co wpływa na wydajność w Javie 2. Pomiary wydajności I. Problemy ze zwiększaniem wydajności II. Co to jest Benchmarking i. Sposoby dokonywania pomiarów ii. Zalety budowania benchmarków iii. Micro-benchmark iv. Macro-benchmark v. Problemy wyników pomiarowania III. Czym jest profilowanie aplikacji i. Wpływ profilowania na wydajność ii. Problemy z płaskim profilowaniem iii. Zalety narzędzi do profilowania iv. Narzędzia do profilowania (Java 6) A. Problemy do zdiagnozowania B. Opis narzędzi C. Profilowanie w Eclipse 3. Wydajna praca z plikami I. Strumienie i. Podstawy ii. Analiza alternatywnych rozwiązań iii. Porównania wydajności rozwiązań na strumieniach II. Swobodny dostęp do plików III. Lepsza wydajność - bibliotek NIO i. Kanały A. FileChannel B. ByteBuffer C. Przykłady użycia kanałów D. Porównanie wydajność rozwiązań ii. Odwzorowywanie plików w pamięci iii. Porównanie wydajności różnych metod dostępu do plików IV. NIO2 - Java7

i. Path (operacje na ścieżkach) ii. Files (operacje na plikach i katalogach) A. Kopiowanie/Przenoszenie B. System plików C. Nowe funkcje odczytu/zapisu D. StandardOpenOptions E. Nowa konstrukcja try i Closeable (try-with-resources) V. Serializacja i. Podstawy serializacji ii. Problemy z serializacją iii. Analiza wyników serializacji iv. Sposoby optymalizacji serializacji 4. Algorytm wydajności I. Sztuka doboru algorytmu i. Porównanie algorytmów ii. Elegancja a brute-force iii. Dziedzina problemu a algorytm II. Problemy z rekurencją III. Nie tylko algorytm się liczy 5. Kolekcje i tablice I. API kolekcji i. Podstawowe interfejsy A. Iterator B. Iterable C. Collection a. Set b. List c. Queue d. Deque D. Map ii. Najważniejsze funkcje II. Struktury danych - podstawy wydajnych operacji i. Tablica laszująca A. Kontrakt między equals a hashcode B. Kontrakt equals C. Problemy z danymi w tablicy haszującej ii. Przeszukiwanie binarne A. Drzewa czerwono-czarne a. Opis zagadnienia b. Zasady działania c. Przykłady działania III. Zbiory A. HashSet B. TreeSet C. LinkedHashSet

D. EnumSet ii. Nowe interfejsy zbiorów (Java 6) A. NavigableSet iii. Optymalizacja pracy na zbiorach iv. Porównanie wydajności różnych implementacji przy różnych zadaniach IV. Listy A. ArrayList B. LinkedList ii. Optymalizacja pracy z listami iii. Porównanie wydajności list iv. Opis struktur ArrayList i LinkedList - wizualizacja złożoności operacji v. Interfejs RandomAccess a wydajność przeglądania listy V. Kolejki A. PriorityQueue B. LinkedList ii. Nowe API - kolejki dwustronne (Java 6) A. Interfejs Deque B. Wydajność implementacji kolejki dwustronnej a. LinkedList b. ArrayDeque VI. Mapy A. HashMap B. TreeMap C. EnumMap D. IdentityHashMap E. WeakHashMap F. LinkedHashMap ii. Nowe API map (Java6) A. NavigableMap iii. Optymalizacja pracy na mapach iv. Porównanie wydajności map v. Jak stworzyć cache VII. Stare kontenery (Java 1.0 i 1.1) i. Implementacje starych kontenerów A. Hashtable B. Vector C. Stack D. BitSet ii. Enymerator - Enymeration iii. Porównanie wydajności z nowymi implementacjami VIII. Widok kolekcji i. Zalety używania ii. Niebezpieczeństwa

iii. Optymalizacja IX. Collections- klasa pomocnicza i. Podstawowe funkcje ii. Rola w optymalizacji iii. Wykorzystanie w algorytmach X. Wydajność a kolekcje odporne na wielowątkowość i. Wydajność kolejek wielowątkowych A. ConcurrentLinkedQueue ii. Wydajność kolejek blokujących A. BlockingQueue B. ArrayBlockingQueue C. DelayQueue D. LinkedBlockingQueue E. PriorityBlockingQueue F. SynchronousQueue iii. Wydajność dwustronnych kolejek blokujących A. BlockingDeque B. LinkedBlockingDeque iv. Wydajność list wielowątkowych A. CopyOnWriteArrayList v. Wydajność map wielowątkowych A. ConcurrentMap B. ConcurrentNavigableMap C. ConcurrentHashMap D. ConcurrentSkipListMap XI. Tablice i. Zalety stosowania tablic ii. Wady stosowania tablic iii. Porównanie tablic z ArrayList iv. Klasa pomocnicza Arrays 6. Caliper - microbenchmark Framework I. Czym jest Caliper II. SimpleBenchmark III. Przykłady menchmarków IV. Uruchomienie Caliper V. Benchmarki parametryzowane (@Param) VI. Parametry Caliper VII. Prezentacja wyników przez WWW VIII. Pułapki 7. Kontrola ładowania klas I. Ładowanie klas- proces II. Klasa Class III. ClassLoader- kiedy tworzyć? IV. Po co kontrolować ładowanie klas? V. Zachłanne ładowanie klas i. Jak działa zachłanne ładowanie klas

ii. Przykład zachłannego ładowania klas iii. Kontrola zachłannego ładowania klas VI. Redukowanie ilości klas i. Klasy wewnętrzne ii. Łączenie listenerów iii. Refleksja iv. Dynamiczne Proxy VII. Kiedy warto kontrolować ładowanie klas? 8. Zarządzanie pamięcią I. Java a zarządzanie pamięcią i. Jak działa odśmiecanie pamięci (Garbage Collector) ii. Co gwarantuje Garbage Collector? iii. Cykl życia obiektu A. Fazy cyklu życia obiektu B. Wyspy obiektów C. Metoda finalize D. Problemy i pułapki II. Typy referencji a Garbage Collector i proces odśmiecania i. SoftReference ii. WeakReference iii. PhantomReference III. Wycieki pamięci w Javie i. Powody ii. Złe praktyki iii. Unikanie IV. Garbage Collector - złe praktyki V. Ograniczanie zajętości pamięci VI. Opcje strojenia Garbage Collector'a i. Parametry konfiguracyjne Garbage Collector'a A. Słaba teoria generacji - podstawa wydajnej pracy na obiektach B. Typy odśmiecania a. Minor Collections b. Major Collections C. Generacje obiektów a. Organizacja pamięci w Javie b. Młoda generacja 1. Eden 2. Survivor Space c. Stara generacja d. Pamięć permanentna D. Parametry wydajnościowe Garbage Collector E. Wymiarowanie pamięci (generacji) ii. Optymalizacja algorytmu odśmiecania dla konkretnej aplikacji na konkretnej platformie sprzętowej iii. Rodzaje GC A. Rodzaje

Powered by TCPDF (www.tcpdf.org) a. Serial Collector (Serial + Serial Old) b. Parallel Collector (Parallel Scavenge + Parallel Old) c. Concurent Collector d. Parallel Copying Collector e. G1 Garbage First B. Zasady działania C. Preferencje D. Skalowalność E. Strojenie F. Problemy i rozwiązania iv. Opcje podglądu pracy GC v. Zalecenia przy wyborze GC 9. Maszyna wirtualna Javy I. Podstawowe tryby pracy a wydajność II. Parametry wydajnościowe JVM III. Porównanie wydajności różnych wersji JVM (1.4, 5.x, 6.x, 7.x) i. Na poziomie różnych benchmarków A. JBB2000 B. JBB2005 C. VolanoMark 2.5 D. I/O Benchmark Comparsion E. CMS Server Benchmark ii. Na poziomie różnych parametrów wydajnościowych A. Działanie po stronie serwera B. Startup C. RAM footprint D. Kopiowanie tablic E. Wydajność GC F. Operacje wejścia-wyjścia 10. Problemy z optymalizacją I. Optymalizacje kompilatora a micro-benchmark II. Micro-benchmark a GC III. Uruchamianie wielu aplikacji IV. Przyzwyczajenia programistów V. Optymalizacja za kompilator VI. Przedwczesna optymalizacja VII. Antywzorze związane z wydajnością i. Zachłanność ii. Pośpiech iii. Lenistwo iv. Ignorancja