Stabilna wersja Javy 9 jest oczekiwana w nie tak dalekiej przyszłości - przed końcem wakacji. Wraz z nią przychodzi projekt Jigsaw - obsługa modułów. Co to właściwie znaczy? Czy zmieni się sposób pisania programów? Czy można będzie zyskać coś na modułach - i jakim kosztem? W tej krótkiej prezentacji zarysuję skrótowo najważniejsze elementy modularności w nowej Javie, opowiem, co mogą zmienić w tworzeniu zarówno mikroserwisów jak i dużych aplikacji, pokażę też trochę działającego kodu wykorzystującego to nowe podejście.
4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...PROIDEA
Funkcje wprowadzane w nowych wersjach przeglądarek niejednokrotnie oferują ciekawe możliwości i są wielkim udogodnieniem dla dewelopera Niestety nie są wdrażane wszędzie jednocześnie oraz z różnych powodów nie możemy założyć, że użytkownik będzie korzystał z najbardziej aktualnego oprogramowania. Jednak wymagania biznesowe zazwyczaj są takie, aby dotrzeć do jak najszerszej grupy odbiorców. Na szczęście nie jesteśmy skazani na antyczne technologie, a nawet istnieje więcej niż jeden sposób rozwiązania wspomnianego problemu. Który wybrać? Jakie wiążą się z tym konsekwencje? Progressive Enhancement i Graceful Degradation to dwa podejścia, które pozwolą Ci osiągnąć kompromis i nie zwariować.
4Developers 2018: Graceful Degradation kontra Progressive Enhancement (Jacek ...PROIDEA
Funkcje wprowadzane w nowych wersjach przeglądarek niejednokrotnie oferują ciekawe możliwości i są wielkim udogodnieniem dla dewelopera Niestety nie są wdrażane wszędzie jednocześnie oraz z różnych powodów nie możemy założyć, że użytkownik będzie korzystał z najbardziej aktualnego oprogramowania. Jednak wymagania biznesowe zazwyczaj są takie, aby dotrzeć do jak najszerszej grupy odbiorców. Na szczęście nie jesteśmy skazani na antyczne technologie, a nawet istnieje więcej niż jeden sposób rozwiązania wspomnianego problemu. Który wybrać? Jakie wiążą się z tym konsekwencje? Progressive Enhancement i Graceful Degradation to dwa podejścia, które pozwolą Ci osiągnąć kompromis i nie zwariować.
O zagadnieniu:
Czy następuje taki moment w życiu programisty, kiedy może on stwierdzić, że jego warsztat jest już doskonały? Nie, jeżeli pracuje w technologiach internetowych. Ta dziedzina informatyki rozwija się w niesamowicie szybkim tempie, a stworzone wczoraj rozwiązania warto stosować już dziś!
Cel i korzyści spotkania:
Podczas spotkania słuchacze poznają aktualnie wykorzystywane technologie oraz kluczowe umiejętności w produkcji aplikacji internetowych, jak również metody programowania ekstremalnego i techniki zwinnego wytwarzania oprogramowania. Osobom, które dopiero zaczynają swoją przygodę z web development, zostanie przedstawiona propozycja działań, których sumienne podjęcie się gwarantuje odniesienie sukcesu zawodowego.
Piątek z XSolve - TravisCI & Continuous DeliveryXSolve
Maciej Papież, Software Developer w XSolve, w prezentacji na temat jak najprostszej implementacji Continuous Delivery/Deployment.
W prezentacji znajdują się informacji na temat prostego pipeline'u CD, TravisCI i praktycznego podejścia do AWS CodeDeploy.
Prezentacja, która powstała na potrzeby akcji 3 webinarów o podstawach automatyzacji w Selenium Webdriver.
Podczas ostatniego webinaru dowiesz się, jak napisać swój pierwszy, podstawowy test automatyczny z wykorzystaniem Selenium WebDriver. W dalszej części stworzymy mały framework testowy i rozbudujmy test o bardziej zaawansowane funkcje.
Prezentacja dostępna jest na kolejnym slajdzie po wyświetlanym nagraniu.
Być może Perl jest najlepszym językiem służącym do pisania skryptów CGI, ale skrypty CGI nie są najlepszym sposobem tworzenia aplikacji internetowych. Potrzeba większej wydajności, lepszej integracji z serwerem WWW i pełniejszego wykorzystania jego możliwości doprowadziła do stworzenia modułu mod_perl. Pozwala on na pisanie modułów serwera Apache w Perlu i na pełny dostęp do funkcji API Apache"a z poziomu Perla.
mod_perl jest bardzo rozbudowany, dzięki czemu daje programiście ogromne możliwości. Książka "mod_perl. Podręcznik programisty" będzie nieocenioną pomocą w poznawaniu jego potencjału. Nauczysz się z niej podstaw mod_perla, a gdy już je opanujesz, poznasz tajniki pisania dużych i skomplikowanych aplikacji.
W książce opisano między innymi:
* Instalację i konfigurację mod_perla
* Komunikację mod_perla z Apache
* Działania na adresach URL
* Obsługę plików w środowisku mod_perla
* Tworzenie własnych aplikacji w oparciu o mod_perla
* Osiągania maksymalnej wydajności aplikacji używających mod_perla
* Dodatkowe moduły współpracujące z mod_perlem
Po przeczytaniu tej książki uzyskasz nową perspektywę na programowanie aplikacji sieciowych w Perlu. Programiści Slashdot.org, Internet Movie Database i Wired wybrali mod_perl jako platformę do tworzenia aplikacji. Może i Ty powinieneś pójść w ich ślady?
Wyobraźmy sobie, że budowanie aplikacji tak proste, jak budowanie domku z klocków, gdzie poszczególne elementy (klocki) są połączone w całość (domek) podczas zabawy (życia domku). Przecież coraz częściej zachodzi potrzeba budowy aplikacji tak, aby składała się ona z luźno związanych komponentów, które ulegają kompozycji dopiero podczas działania aplikacji. Właśnie na takie podejście pozwala MEF, czyli „Managed Extensibility Framework", nowa biblioteka wchodząca w skład .NET Framework 4.0.
Chciałbym wszystkich zainteresowanych zaprosić na moją prezentację "Wprowadzenie do Managed Extensibility Framework w .NET 4.0", którą pokażę na najbliższym spotkaniu Łódzkiej Grupy Profesjonalistów IT & .NET.
Niniejsza sesja ma za zadanie wprowadzić słuchacza w zagadnienia związane z „Managed Extensibility Framework", wskazać potencjalne zastosowania oraz pokazać przykładową aplikację.
Bartosz Magier: Klienci czasem wymagają od nas zawrotnej prędkości w tworzeniu aplikacji. Pewnie nieraz zetknęliście się z problemem stworzenia funkcjonalnego prototypu, który klient może zobaczyć, w którym może poklikać – bo same makiety i grafiki mu nie wystarczają. Na prezentacji dowiecie się, czym jest VueJS, jak szybko przy jego pomocy można tworzyć funkcjonalne prototypy oraz poznacie zalety Vue CLI 3.
Mutation testing: Too good to be true? (Devoxx)Piotr Kubowicz
Mutation testing is an approach to fight poorly written unit tests by automatically checking if introducing a bug to code is detected by tests. The idea was heavily promoted at conferences at some time and now comes back in 2020 ThoughtWorks Technology Radar. But how well does it work in practice? I will explain the basic principles of Mutation testing and what kind of mistakes are found by looking at Pitest, a popular JVM tool. Finally, I will try to answer if Mutation testing will improve code quality in your project.
Mutation testing: Too good to be true? (4Developers)Piotr Kubowicz
Mutation testing is an approach to fight poorly written unit tests by automatically checking if introducing a bug to code is detected by tests. The idea was heavily promoted at conferences at some time and now comes back in 2020 ThoughtWorks Technology Radar. But how well does it work in practice? I will explain the basic principles of Mutation testing and what kind of mistakes are found by looking at Pitest, a popular JVM tool. Finally, I will try to answer if Mutation testing will improve code quality in your project.
O zagadnieniu:
Czy następuje taki moment w życiu programisty, kiedy może on stwierdzić, że jego warsztat jest już doskonały? Nie, jeżeli pracuje w technologiach internetowych. Ta dziedzina informatyki rozwija się w niesamowicie szybkim tempie, a stworzone wczoraj rozwiązania warto stosować już dziś!
Cel i korzyści spotkania:
Podczas spotkania słuchacze poznają aktualnie wykorzystywane technologie oraz kluczowe umiejętności w produkcji aplikacji internetowych, jak również metody programowania ekstremalnego i techniki zwinnego wytwarzania oprogramowania. Osobom, które dopiero zaczynają swoją przygodę z web development, zostanie przedstawiona propozycja działań, których sumienne podjęcie się gwarantuje odniesienie sukcesu zawodowego.
Piątek z XSolve - TravisCI & Continuous DeliveryXSolve
Maciej Papież, Software Developer w XSolve, w prezentacji na temat jak najprostszej implementacji Continuous Delivery/Deployment.
W prezentacji znajdują się informacji na temat prostego pipeline'u CD, TravisCI i praktycznego podejścia do AWS CodeDeploy.
Prezentacja, która powstała na potrzeby akcji 3 webinarów o podstawach automatyzacji w Selenium Webdriver.
Podczas ostatniego webinaru dowiesz się, jak napisać swój pierwszy, podstawowy test automatyczny z wykorzystaniem Selenium WebDriver. W dalszej części stworzymy mały framework testowy i rozbudujmy test o bardziej zaawansowane funkcje.
Prezentacja dostępna jest na kolejnym slajdzie po wyświetlanym nagraniu.
Być może Perl jest najlepszym językiem służącym do pisania skryptów CGI, ale skrypty CGI nie są najlepszym sposobem tworzenia aplikacji internetowych. Potrzeba większej wydajności, lepszej integracji z serwerem WWW i pełniejszego wykorzystania jego możliwości doprowadziła do stworzenia modułu mod_perl. Pozwala on na pisanie modułów serwera Apache w Perlu i na pełny dostęp do funkcji API Apache"a z poziomu Perla.
mod_perl jest bardzo rozbudowany, dzięki czemu daje programiście ogromne możliwości. Książka "mod_perl. Podręcznik programisty" będzie nieocenioną pomocą w poznawaniu jego potencjału. Nauczysz się z niej podstaw mod_perla, a gdy już je opanujesz, poznasz tajniki pisania dużych i skomplikowanych aplikacji.
W książce opisano między innymi:
* Instalację i konfigurację mod_perla
* Komunikację mod_perla z Apache
* Działania na adresach URL
* Obsługę plików w środowisku mod_perla
* Tworzenie własnych aplikacji w oparciu o mod_perla
* Osiągania maksymalnej wydajności aplikacji używających mod_perla
* Dodatkowe moduły współpracujące z mod_perlem
Po przeczytaniu tej książki uzyskasz nową perspektywę na programowanie aplikacji sieciowych w Perlu. Programiści Slashdot.org, Internet Movie Database i Wired wybrali mod_perl jako platformę do tworzenia aplikacji. Może i Ty powinieneś pójść w ich ślady?
Wyobraźmy sobie, że budowanie aplikacji tak proste, jak budowanie domku z klocków, gdzie poszczególne elementy (klocki) są połączone w całość (domek) podczas zabawy (życia domku). Przecież coraz częściej zachodzi potrzeba budowy aplikacji tak, aby składała się ona z luźno związanych komponentów, które ulegają kompozycji dopiero podczas działania aplikacji. Właśnie na takie podejście pozwala MEF, czyli „Managed Extensibility Framework", nowa biblioteka wchodząca w skład .NET Framework 4.0.
Chciałbym wszystkich zainteresowanych zaprosić na moją prezentację "Wprowadzenie do Managed Extensibility Framework w .NET 4.0", którą pokażę na najbliższym spotkaniu Łódzkiej Grupy Profesjonalistów IT & .NET.
Niniejsza sesja ma za zadanie wprowadzić słuchacza w zagadnienia związane z „Managed Extensibility Framework", wskazać potencjalne zastosowania oraz pokazać przykładową aplikację.
Bartosz Magier: Klienci czasem wymagają od nas zawrotnej prędkości w tworzeniu aplikacji. Pewnie nieraz zetknęliście się z problemem stworzenia funkcjonalnego prototypu, który klient może zobaczyć, w którym może poklikać – bo same makiety i grafiki mu nie wystarczają. Na prezentacji dowiecie się, czym jest VueJS, jak szybko przy jego pomocy można tworzyć funkcjonalne prototypy oraz poznacie zalety Vue CLI 3.
Mutation testing: Too good to be true? (Devoxx)Piotr Kubowicz
Mutation testing is an approach to fight poorly written unit tests by automatically checking if introducing a bug to code is detected by tests. The idea was heavily promoted at conferences at some time and now comes back in 2020 ThoughtWorks Technology Radar. But how well does it work in practice? I will explain the basic principles of Mutation testing and what kind of mistakes are found by looking at Pitest, a popular JVM tool. Finally, I will try to answer if Mutation testing will improve code quality in your project.
Mutation testing: Too good to be true? (4Developers)Piotr Kubowicz
Mutation testing is an approach to fight poorly written unit tests by automatically checking if introducing a bug to code is detected by tests. The idea was heavily promoted at conferences at some time and now comes back in 2020 ThoughtWorks Technology Radar. But how well does it work in practice? I will explain the basic principles of Mutation testing and what kind of mistakes are found by looking at Pitest, a popular JVM tool. Finally, I will try to answer if Mutation testing will improve code quality in your project.
Lotny start z testami kontraktowymi 4DevelopersPiotr Kubowicz
Chcąc zapewnić poprawną współpracę mikroserwisów, wpadamy często w pułapkę testów, którym nie ufamy lub które są zbyt trudne w utrzymaniu. Testy kontraktowe to alternatywne podejście oferujące z jednej strony szybką informację zwrotną a z drugiej strony poziom pewności niedostępny dla testów izolowanych. To nie jedyne korzyści: z ich wykorzystaniem możemy przyspieszyć nasz cykl pracy oraz lepiej zrozumieć, jak połączone są nasze systemy. W trakcie prezentacji zobaczymy minimalny działający przykład napisany w Kotlinie przy użyciu frameworku Pact, prześledzimy, co możemy zyskać w zależności od nakładu pracy oraz spojrzymy szerzej na ekosystem testów kontraktowych, porównując Pact z biblioteką Spring Cloud Contract.
RSocket to reaktywny protokół sieciowy wspierany m.in. przez the Linux Foundation i twórców Springa. W Internecie możecie znaleźć dużo hype’u i aplikacji typu hello world, ta prezentacja ma na celu skupienie się bardziej na tym, jak RSocket może wpłynąć na działanie naszych aplikacji. Porozmawiamy, w jaki sposób możemy wycisnąć więcej szybkości z kodu pozostając przy “tradycyjnym” HTTP, ale wprowadzając Server-Sent Events, a także o przypadkach użycia, gdzie RSocket faktycznie wprowadza nową jakość.
Chcąc zapewnić poprawną współpracę mikroserwisów, wpadamy często w pułapkę testów, którym nie ufamy lub które są zbyt trudne w utrzymaniu. Testy kontraktowe to alternatywne podejście oferujące z jednej strony szybką informację zwrotną a z drugiej strony poziom pewności niedostępny dla testów izolowanych. To nie jedyne korzyści: z ich wykorzystaniem możemy przyspieszyć nasz cykl pracy oraz lepiej zrozumieć, jak połączone są nasze systemy. W trakcie prezentacji zobaczymy minimalny działający przykład napisany w Kotlinie przy użyciu frameworku Pact, prześledzimy, co możemy zyskać w zależności od nakładu pracy oraz spojrzymy szerzej na ekosystem testów kontraktowych, porównując Pact z biblioteką Spring Cloud Contract.
Slajdy z prezentacji na konferencji DynamIT 2019.
Microservices interactions are hard to verify. You often end up with tests that are not trustworthy or too hard to set up. Contract Testing is an alternative approach that offers both compelling execution speed and confidence level that isolated tests are not able to reach. But there are more benefits: Contract Testing can speed up your development workflow and help understand how your systems are connected. We will see a minimal working example using Kotlin and Pact framework, explore how much you can gain depending on the effort you invest and take a wider look on the Contract Testing ecosystem, by comparing Pact with Spring Cloud Contract.
First presented on Heisenbug Moscow 2018 conference.
Używa sztuczek składniowych, które mało komu przyszłyby do głowy. Pisze kod tak błyskotliwy, że nie do pomylenia z niczyim innym, choć ciężki do zrozumienia na pierwszy rzut oka. Jest niezrównany w maglowaniu kandydatów problemami algorytmicznymi. To kolega dwa biurka dalej albo głos w twojej głowie. Podziwiasz go. Nie protestujesz i robisz tak, jak jemu się podoba. To ignorowany, ale realny problem dla twojego zespołu.
Umiejętności miękkie – czy muszę mieć z nimi coś wspólnego? Czy programista może mieć z nich jakiś pożytek, czy też lepiej zostawić je menedżerom? Czy obciachem jest dla fachowca czytanie książek o inteligencji emocjonalnej? W mojej prezentacji pokażę, co na ten temat mówią raporty z branży i opowiem, jakie skutki miały moje starania, by lepiej dogadywać się z ludźmi. Pomówimy o introwertyzmie, problemach przy code review i unikaniu konfliktu.
2. PLAN PODRÓŻY
1. Czym w Javie będą moduły?
2. Moduły a mikroserwisy
3. Moduły a biblioteki i monolity
4. Wsparcie w IDE (IntelliJ Idea)
5. Narzędzia do budowania
6. Jak przygotować się już teraz
4. CZYM JEST MODUŁ
module example.greeter.protocol {
requires java.base;
requires guava;
exports example.greeter.protocol;
}
5. ORGANIZACJA JRE
java.base (najpewniej jest tu każda klasa, o której
pomyślisz)
java.logging
java.management (JMX)
java.instrument
java.corba :)
razem ponad 70
6. NIE TRZEBA UŻYWAĆ MODUŁÓW
Kod można uruchamiać "po staremu" - przez classpath.
Działa np. Tomcat 8, ElasticSearch 2.4
7. JAK DEKLAROWAĆ MODUŁ
moduł to JAR z plikiem module-info.class
tworzymy src/main/java/module-info.java
takiego pliku nie da się skompilować przy
-source 1.8
po skompilowaniu takiego JAR-a nie wczyta Java 8
8. MODUŁY W MIKROSERWISACH
- tworzy z modułów custom runtime image
custom-jre/bin/java -m moduł/klasa
jlink
build/custom-jre:
bin conf include legal lib release
build/custom-jre/bin:
java keytool
build/custom-jre/lib:
classlist jrt-fs.jar libjimage.so libnio.so modules tzdb.dat
jexec jvm.cfg libjsig.so libverify.so security
jli libjava.so libnet.so libzip.so server
9. MODUŁY W MIKROSERWISACH
np. Docker z prostym serwerem HTTP z OpenJDK 8
na Debianie Jessie: 310 MB
to samo zlinkowane z Javą 9: 199 MB
OpenJDK 8 na Alpine Linuksie: 81 MB
Alpine + Java 9: 35-41 MB
bez Dockera: katalog 30 MB, .tar.bz2 15 MB
10. MODUŁY W MIKROSERWISACH
Weźmy prawdziwy serwer, ale lekki np. Undertow
( )
java.base, java.naming, java.security.jgss, java.sql,
java.logging, java.management, java.security.sasl
Custom JRE: 37 MB
czołówka wydajności
11. JAK WYCIĄGNĄĆ ZALEŻNOŚCI?
(ale nie z JDK 8)jdeps
% jdeps -summary --class-path
xnio-api-3.3.6.Final.jar:jboss-logging-3.2.1.Final.jar
undertow-core-2.0.0.Alpha1.jar
undertow-core-2.0.0.Alpha1.jar -> java.sql
undertow-core-2.0.0.Alpha1.jar -> jdk.unsupported
% jdeps -verbose:class undertow-core-2.0.0.Alpha1.jar
io.undertow.util.FastConcurrentDirectDeque -> sun.misc.Unsafe
JDK internal API (jdk.unsupported)
12. MODUŁY DLA MONOLITÓW
pisząc moduł udostępniamy klientom tylko te
publiczne klasy, które wybierzemy
resztę możemy zmieniać jak chcemy i mamy
gwarancję, że nic nie popsujemy klientom
exports example.greeter.protocol;
13. MODUŁY DLA MONOLITÓW
klienci nie widzą naszych zależności
możemy je dodawać i usuwać jak chcemy
zależność to część naszego API - udostępniamy ją
klientom
requires guava;
requires transitive guava;
14. WSPARCIE IDE
Idea od
sugeruje mody kacje w module-info.java
ale też ciągle podpowiada nieeksportowane klasy
Eclipse -
2017.1
podobno
15. URUCHAMIANIE Z MODUŁAMI
Zamiast
uruchamiamy
java -cp build/modules/greeter-protocol.jar:
build/modules/greeter-server.jar example.greeter.server.Runner
java --module-path build/modules -m example.greeter.server/
example.greeter.server.Runner
16. WERYFIKACJA PRZY URUCHAMIANIU
Error occurred during initialization of boot layer
java.lang.module.FindException: Module example.greeter.protocol
not found, required by example.greeter.server
17. ZALEŻNOŚCI Z JAVY 8 JAKO MODUŁY
Automatyczne moduły - JAR wrzucony do module path
staje się modułem.
Nazwa modułu z nazwy pliku: guava-21.0.jar ->
guava
18. PROBLEMY Z MODUŁAMI
zakaz split packages - dany pakiet tylko w 1 module,
nawet nieeksportowany
wiele bibliotek nie było pisanych z taką myślą
Jigsaw nie zajmuje się kon iktem wersji, to zadanie
Gradle'a/Mavena
możliwe NoClassDefFoundError lub
NoSuchMethodError w runtimie
19. KIEDY BIBLIOTEKI BĘDĄ MODUŁAMI?
nieprędko
Spring 5.0 M5 - kompatybilny z Javą 9, na razie bez
module-info
21. MODUŁY BEZ JAVY 9
Java Library Plugin w Gradle'u
nowy, promowany sposób kompilowania Javy
Java Software Model
eksperymentalny, brak wsparcia w IDE
dodatkowo
ukrywanie zależności przed klientami
ukrywanie publicznych klas przed
klientami
22. DO SAMODZIELNEGO CZYTANIA
- zaawansowane
tematy; nieaktualna składnia!
+
http://docs.oracle.com/javase/9/migrate/toc.htm
http://openjdk.java.net/projects/jigsaw/quick-start
slajdy The Java 9 Module System In Action
Advanced Modular Development na Java One 2016
The State of the Module System
aktualny format deklaracji modułu
Modules vs. microservices
RedHat strzela focha odpowiedź
24. KOD I SLAJDY
Prezentacja na licencji
Gra ka , CC BY 2.0
github.com/pkubowicz/java9-link
slideshare.net/PiotrKubowicz1
Creative Commons Attribution 4.0 International
Willi Heidelbach