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

Zaawansowane programowanie w języku C++

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

Projektowanie i implementacja wysokowydajnych aplikacji w języku

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

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

Programowanie obiektowe

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

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

java.util.* :Kolekcje Tomasz Borzyszkowski

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

Visual VM, Java Management extension i inne ciekawostki

Programowanie w języku Java (OCA+OCP)

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Programowanie.NET - kurs zaawansowany

Architektura mikroserwisów na platformie Spring IO

Dni: 2. Partner merytoryczny. Opis: Adresaci szkolenia

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Podstawy otwartych języków programowania Przechowywanie danych

Podstawy analizy danych numerycznych w języku Python

Kolekcje. Na podstawie:

Praktyczne zastosowanie bibliotek Boost oraz nowego standardu C++11

Programowanie w języku Java. Kolekcje

Programowanie w języku Java 7 z biblioteką SWING

Java Collections Framework

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

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

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

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

HP Matrix Operating Environment Foundations

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

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

Program szkolenia: REST i Microservices w PHP

Korporacyjna Magistrala Usług na przykładzie Mule ESB

SZKOLENIE TWORZENIE SYSTEMÓW

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

Kolekcje - pakiet Java Collections Framework

Wydajny Linux. Jakub Woźniak KN Sieci Komputerowych i Systemów Rozproszonych Tenesys

Szkolenie: JMeter w praktyce

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

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

VMware vsphere 5.5: Install, Configure, Manage

Podstawy programowania. Wprowadzenie

Programowanie Obiektowe (Java)

PHP revisited - odświerzenie spojrzenia na programowanie w PHP

Java Persistence API - zagadnienia zaawansowane

Dni: 5. Opis: Adresaci szkolenia

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

Systemy operacyjne na platformach mobilnych 2 Programowanie aplikacji z graficznym interfejsem użytkownika w GTK+

Dni: 3. Opis: Adresaci szkolenia

Struktury systemów operacyjnych

Programowanie w języku Java (przygotowanie do zawodu)

Spring Framework - wprowadzenie i zagadnienia zaawansowane

NETBEANS PROFILER TOMASZ ŁUKASZUK

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

Programowanie obiektowe. Wprowadzenie

Kolekcje - pakiet Java Collections Framework

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

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

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

Referat pracy dyplomowej

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

Szkolenie wycofane z oferty

VMware vsphere: Automation Fast Track

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

Dokumentacja aplikacji Szachy online

Aplikacje Internetowe, Servlety, JSP i JDBC

Historia modeli programowania

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

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

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

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

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

HP Matrix Operating Environment: Infrastructure Administration

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

Implementing HP Rack and Tower & HP BladeSystem Server Solutions

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Program szkolenia: Symfony, nowoczesny framework PHP

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

Załącznik nr 1 do zapytania ofertowego nr 1/POKL/2015

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

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

Aplikacje webowe z wykorzystaniem Node.js oraz Express

A Study of Java`s Non-Java Memory. Remigiusz Mytyk

Parametry wydajnościowe systemów internetowych. Tomasz Rak, KIA

Podstawy i języki programowania

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

Ciągłe dostarczanie oprogramowania : kompletny przewodnik / Eberhard Wolff. Gliwice, cop Spis treści

Zmiana specyfikacji istotnych warunków zamówienia

NASI SPONSORZY I PARTNERZY

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

Administratorzy systemów, inżynierowie, konsultanci, którzy wdrażają i zarządzają rozwiązaniami opartymi o serwery HP ProLiant

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

OSGi Agata Hejmej

Dni: 5. Opis: Adresaci szkolenia. Kurs jest przeznaczony dla:

Programowanie obiektowe

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 A. Problemy do zdiagnozowania B. Opis narzędzi IV. Użycie wybranych narzędzi i. jconsole ii. Java VisualVM (jvisualvm) iii. Java Mission Control (JMC) iv. Memory Analyzer (MAT) 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 haszują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

i. Wydajność standardowych implementacji 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 i. Wydajność standardowych implementacji 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 i. Wydajność standardowych implementacji 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 i. Wydajność standardowych implementacji 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 XII. Zalety stosowania tablic XIII. Wady stosowania tablic XIV. Porównanie tablic z ArrayList XV. Klasa pomocnicza Arrays 6. JMH - microbenchmark Framework I. Wstęp do JMH II. Adnotacja @Benchmark III. Jak przygotować projekt JMH IV. Uruchomienie i wyniki JMH V. Dodatkowa konfiguracja JMH i. @Warmup, @Measurement ii. @OutputTimeUnit, @Timeout iii. @OperationsPerInvocation iv. @BenchmarkMode, @Fork VI. Współbieżność w JMH i. @Threads

ii. @Group i @GroupThreads VII. Benchmarki parametryzowalne i. @State(Scope) i @Param ii. @Setup i @Teardown VIII. Blackhole i bezpieczne pętle IX. Pułapki benchmarkowania X. Inne frameworki microbenchmarków XI. Informacje dodatkowe (opcjonalne) XII. Detale wątków w grupach XIII. Detale Level.Invocation XIV. Użycie profilerów XV. @CompilerControl, @AuxCounters XVI. Obiekty wstrzykiwalne z API JMH 7. Caliper - microbenchmark Framework (opcjonalne zamiast JMH) 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 8. 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. Invokedynamic v. Dynamiczne Proxy VII. Kiedy warto kontrolować ładowanie klas? VIII. Wstęp do modułów - projekt jigsaw (Java 9) 9. 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 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 vi. Inne opcje strojenia GC vii. Zmiany w Java 8 i Java 9 viii. Zing jako płatna alternatywa

10. 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 11. Optymalizacja a HTTP (opcjonalne) I. Kłopoty z optymalizacją serwerów II. Przydatne narzędzia i biblioteki i. HttpUnit i JWebUnit ii. HttpUnit i JWebUnit iii. Grinder iv. Apache JMeter III. Więcej o Apache JMeter i. Rodzaje elementów A. Logic Controller B. Config Element C. Pre Processor D. Timer E. Sampler F. Post Processor G. Assertion H. Listener ii. Kolejność wykonania iii. Opis wybranych kontrolerów A. Recording Controller B. Simple Controller C. Loop Controller D. Once Only Controller E. Interleave Controller iv. Użycie linii komend 12. Problemy z optymalizacją I. Optymalizacje kompilatora a micro-benchmark II. Micro-benchmark a GC III. Uruchamianie wielu aplikacji

Powered by TCPDF (www.tcpdf.org) 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