V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.
Oficiální ceny Raspberry Pi Compute Modulů 4 klesly o 5 dolarů (4 GB varianty), respektive o 10 dolarů (8 GB varianty).
Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Prvotní a správná otázka je: proč se to všechno děje. Jedna z odpovědí leží pro programátory těžko uchopitelné a o to více ignorované škatulce s nápisem Business. Je historicky prokazatelné, že pouze pár programátorů (nedá moc velkou námahu si domyslet jejich jména) toto pochopilo a dokázalo úspěšně propojit technologickou výhodu s úspěchem komerčním. To je zároveň důvod, proč v čele většiny technologických společností nestojí programátor, ale někdo kdo dokázal spojit oba světy. Každý člověk bez ohledu na vzdělání, pracovní pozici či věk má inovativní nápady. Ovšem pouze menší část lidí dokáže začít tyto nápady realizovat. Ještě menší část těchto lidí na nich dokáže kontinuálně pracovat a dále je rozvíjet. A ta nejmenší část lidí je dokáže přetavit v úspěch [1].
První klíčovou veličinou je čas, za který se podaří nápad uvést do stavu, který je možné zpeněžit [2], bez ohledu na fakt jestli se jedná o jednotlivce nebo firmu. Druhou klíčovou veličinou jsou náklady, které s tím jsou spojené, provozní i startovací. Jedním ze způsobů, kterým lze výrazně redukovat čas nutným pro uvedení na trh představuje volba správné technologie a platformy. Náklady lze do jisté výše redukovat pronájmem bez ohledu na to jestli se jedná o svět virtuální a nebo ten fyzický.
Kromě faktoru času a nákladu hrají přímou roli i veličiny, které není možné ovlivnit. Podle statistik World Internet Usage používalo Internet na konci roku 2000 celkem 360 985 492 uživatelů, ke konci roku 2011 je to již uživatelů 2 095 006 005 [3]. Podle typu operací je možné si udělat celkový obrázek o celkovém objemu dat. Za rok 2010 například služba Flickr hostovala 5 000 000 000 obrázků. Za ten samý rok bylo na sociální síti Twitter poslánu 25 000 000 000 zpráv takzvaných tweetů [4]. Podle odhadů firmy Cisco bude v roce 2015 připojeno 15 000 000 000 zařízení [5]. Zjednodušeně řečeno velké množství uživatelů používá velké množství zařízení a produkuje velké množství dat. Čísly těžko uchopitelný údaj představuje i změna používání webu. Od prohlížení statických stránek nastal výrazný posun k dynamickému chování a webovým aplikacím. Tato změna je označována jako Web 2.0.
Výše zmíněné údaje jsou ve velké míře příčinou, a následkem je zrod přístupů či technologií jako Cloud computing, NoSQL databází nebo HTML 5. Tyto technologie zpětně způsobily a způsobují částečnou změnu architektury aplikací, a v neposlední řadě přímo ovlivňují jakým způsobem se aplikace samotné vyvíjí. Jestliže v polovině devadesátých let převládala dvouvrstvá architektura s takzvaným tlustým klientem, na začátku nového století došlo k posunu k architektuře třívrstvé, díky které mimochodem vznikla Java EE, a konceptu takzvaného tenkého klienta[6]. V dnešní době se již dá těžko mluvit o tenkém klientovi. Požadavky z pohledu uživatelského rozhraní i interaktivity aplikace vedou k přesunu části logiky ze serveru zpět na klienta. Ačkoliv by se mohlo zdát, že střední vrstva a server by si mohl oddechnout, opak je pravdou. Server musí být schopen velmi efektivně škálovat vzrůstající počet HTTP požadavků.
Když se řekne Java mnoho lidí si představí pouze jazyk, ale ve skutečnosti se jedná o celý ekosystém též nazývaný platforma. Ta se skládá z několika klíčových součástí: srdcem je Java Virtual Machine, kolem ní je jazyk, dále nástroje pro vývoj a monitorování, a v neposlední řadě i knihovny. Ty standardní umožňující práci například se souborovým systémem, a potom velké množství open source knihoven pokrývajících prakticky veškerou škálu toho co člověk potřebuje minimálně ve dvaceti variantách.
Jazyk je jednou z možností, kde se může Java inovovat. Pokud se bavíme o jazyku, jedná se především o změny a rozšíření jeho syntaxe. Ty lze označit buďto jako zásadní viz případ Lambda výrazů (closures) [7] a nebo jako syntaktických cukrátek v podobě Diamantového operátoru (přidaný již v Jave 7). Společný problém těchto změn je zvýšení komplexity syntaxe jazyka a tím pádem zhoršení udržovatelnosti zdrojového kódu. Právě jednoduchá syntaxe a jistá míra konzervativnosti stále za velkou oblibou Javy jako jazyku. Mnohem závažnějším problémem je zpětná kompatibilita. Skryté nebezpečí totiž představuje provázanost jazyka a standardních knihoven resp. jejich API. Zavedení Lambda výraz totiž dává smysl pouze se změnou API např. u standardních kolekcí (Mapa, Seznam atd.), se kterými dává jejich použití teprve smysl. Nekompatibilní změna v těchto API by ovšem vedla k nemožnosti přenést velké množství existujícího kódu. V neposlední řadě podobně velká změna syntaxe tohoto ražení v podobě Generik v Jave 5 dopadla dosti tristním způsobem.
Z dalších možností inovace na úrovni jazyku přichází v úvahu zbrusu nový jazyk. Původní Java by zůstala nedotčena a vytvořil by se nový jazyk, říkejme mu Java 2.0. Problém s Java 2.0 je v tom, že nikdo nedokáže říci, jak by měl takový jazyk vypadat a jaká kritéria by měl splňovat, aby přežil a byl úspěšný minimálně jako Java. Bez ohledu na finální rozhodnutí je pro Java platformu štěstím, že nad ní vyrostlo celé množství dalších jazyků tu s větší (Groovy) tu s menší (Scala) či dokonce žádnou podobností (Clojure), které je možné použít pro řešení specifických úkolů.
Jednou z motivací, která stojí za snahou změnit jazyk, je komplexnost psaní kódu, který bude dobře škálovat na víceprocesorovém hardware, který je dnes běžně k dispozici. Bohužel vlákna a paměťový model, synchronizační primitiva to je oblast v Jave, která je příliš složitá a její plné pochopení představuje těžko proniknutelnou bariéru pro většinu programátorů včetně autora těchto řádků. Jenom málo na tom mění balík java.util.concurrent, který byl představen v Jave 5. Z programovacího jazyku Erlang a dalších se ukazuje, že je potřeba ještě vyšší úroveň abstrakce, kterou nabízí Aktory [8] , Dataflow proměnných [9] nebo Softwarová Transakční Paměť [10]. Tyto konstrukty mohou být poskytovány jako nové standardní knihovny. I další úpravy standardních knihoven se týkají zvýšení propustnosti, například v podobě asynchronní podpory k blokujícím API jako je JDBC nebo HTTP klient.
Úpravy JVM [11] se musí týkat podpory velkých dat. Jedná se například o efektivnější reprezentaci řetězců a dalších datových struktur [12]. Problémy představuje je i správa velkých heapu (>10GB) a chování garbage collectoru, kdy při Full GC dochází ke kompletnímu zastavení práce JVM v řádu desítek minut [13]. Kromě úpravy chování bude potřeba přidat i další vlastnosti, které se dnes drátují manipulací s byte kódem. Řeč je především continuations, zmrazení a obnovení aktuálního stack frame, které umožní efektivní psaní aplikací postavených na asynchroniích voláních.
Z pohledu nasazení JVM do Cloudu se jedná především o podporu modulárního systému pro nasazování aplikací. Současný deployment model neumožňuje definovat moduly a jejich verze, které bude aplikace potřebovat, a vede k nulovým možnostem poskytování knihoven cílovým systémem. Typická aplikace díky tomu vypadá jako obrovský chumel JAR archivů, kde není jasné co je a není opravdu potřeba. Výsledkem jsou zvýšené paměťové nároky a pomalý start aplikací, který se díky čtení souborů ze systému podobá spíše zátěžovému testu souborového systému.
Vývoj v oblasti Javy dlouho trpěl díky přehlížení okolních trendů. Díky tomu je Enterprise verze (Java EE) v podstatě odepsanou technologií pro vývoj webových aplikací. V prostředí veřejných public cloud poskytovatelů to platí dvojnásob. Použitím technologie Java EE se vystavujete obrovským problémům při vývoji i nasazení tohoto typu aplikací. K zásadním nedostatkům patří složitost vývoje a nasazení. Bohužel většina technologií z Java EE stacku je absolutně nevhodná. Kromě ryze technických problémů jsou tu problémy v návrhu jednotlivých technologií. Většina z nich je totiž navržena stavově a s ohledem na to, že vývojář je absolutně odstíněný od prostředí ve kterém aplikace běží. S množstvím dat a požadavcích jednoduchosti vývoje se mění i architektura aplikací. Kromě návratu tlustého klienta, o kterém již byla řeč, se jedná o využívání NoSQL databází jako alternativy k databázím relačním. Je to plíživá revoluce, podobná té kterou spustil kolem roku 2007 framework Ruby On Rails, která bude ovlivňovat vývoj, technologie a knihovny v Jave. Největší chybou pro Javu a celý ekosystém by bylo, stejně jako v roce 2007, tyto trendy podcenit a nebo úplně ignorovat.
Jednou z nejsilnějších a zároveň nejslabších stránek Javy je její fragmentace. Neexistují jeden postup a knihovny pro řešení určitých typů problémů, na druhou stranu to umožňuje dynamicky se přizpůsobit na měnící se podmínky a vybrat vždy tu nejlepší kombinaci. Doufejme, tedy že se Java bude dál "fragmentovat" pod různými vlivy, kdy ty překonané uvolní cestu těm adaptabilnějším, díky nímž budeme my vývojáři schopni přetavit inovativní myšlenky a nápady.
Roman Pichlík pracuje ve společnosti GoodData, kde je zodpovědný za Java
část GoodData platformy. Mimo to pořádá setkání Czech Java User Group v
Praze, nahrává CZ Podcast a příležitostně publikuje pro svůj blog na adrese
dagblog.cz. Kromě toho se snaží pravidelně věnovat sportu a literatuře.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej: