Byla vydána (𝕏) listopadová aktualizace aneb nová verze 1.96 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.96 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
OpenMandriva ROME, tj. průběžně aktualizovaná (rolling) edice linuxové distribuce OpenMandriva, byla vydána ve verzi 24.12.
U příležitosti oslav sedmi let prací na debianím balíčku vyšlo GPXSee 13.33. Nová verze přináší rychlejší vykreslování vektorových map a vylepšení/doladění nového stylu pro OpenAndroMaps/Mapsforge mapy. Kdo by rád OSM mapy v "prémiovém" barevném schématu a nechce čekat až nová verze dorazí do jeho distribuce, nalezne zdrojové kódy na GitHubu.
Tým Google Quantum AI představil kvantový čip Willow se 105 qubity.
Byla vydána nová verze 257 správce systému a služeb systemd (GitHub).
RPCS3 (Wikipedie), tj. open source emulátor Sony PlayStation 3, nově oficiálně běží také na architektuře arm64. Podporován je Apple Silicon (YouTube) je i Raspberry Pi 5 (YouTube).
Jaký byl rok 2024 ve vyhledávání Googlu? Mistrovství světa v hokeji, triumf Davida Pastrňáka, Robert Fico nebo loučení s herečkou Simonou Postlerovou. To jsou některá z témat, která letos nejvíce rezonovala ve vyhledávání na Googlu. Češi s velkým zájmem zjišťovali, proč je přestupný rok, a s podobnou intenzitou hledali důvod absence Zdeňka Chlopčíka ve StarDance. Kompletní žebříčky včetně globálních a další zajímavosti.
Chatbot Grok AI je nově pro uživatele sítě 𝕏 zdarma (návod). S omezením 10 zpráv za dvě hodiny a tři obrázky za den.
GNU Shepherd (Wikipedie) dospěl do verze 1.0.0. Po 21 letech. Jedná se o init systém a správce služeb napsaný v Guile Scheme. Původně se jmenoval GNU dmd (Daemon managing Daemons). Používá se v systému GNU Guix.
GNUnet (Wikipedie) byl vydán v nové major verzi 0.23.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.
V roce 2006 došlo ve světě opensource Javy k revoluci, společnost Sun Microsystems oznámila vznik projektu OpenJDK. Tento projekt postupně zveřejnil zdrojové kódy platformy Java SE (JRE, JDK a později i standardní knihovnu) pod licencí GNU GPL 2 s Classpath výjimkou – ta umožňuje, aby standardní knihovny (pod GPL) mohly být použity i pro neGPL kód. Zveřejněny byly zdrojové kódy připravovaného JDK7.
V následujícím roce se do vývoje zapojila společnost Red Hat, byly postupně zveřejněny zbývající části platformy, došlo k založení Porters Group zabývající se portem OpenJDK na jiné platformy, zveřejnil se repositář systému pro správu verzí Mercurial, vydala se JDK6 pod názvem openJDK6 a založil se projekt IcedTea. Většina zmíněných projektů postupem času rovněž přešla z GNU Classpath na OpenJDK, protože je daleko kompletnější a podporuje JDK6 a připravovanou JDK7.
OpenJDK vychází ze stejných zdrojových kódů jako Oracle JDK SE (OpenJDK6 je kompatibilní s JDK6), tudíž je s ní prakticky 100% kompatibilní. Odlišnosti nicméně existují – pro správu barev používá OpenJDK LittleCMS, kdežto Oracle Java proprietární technologii. Některé části jako zvukový systém byly přepsány. Rovněž technologie Java Web Start a Java applet nebyly nikdy uvolněny jako open source. To je mimochodem nejčastější případ, kdy si uživatelé všimnou, že nepoužívají proprietární JRE. Další rozdíly mohou být velice nečekané a záludné – libjvm.so musí obsahovat ladící symboly, protože na tom závisejí nástroje jako jmap. Distributoři obvykle tyto symboly z binárních symbolů odstraňují a přesunují do speciálních balíčků, což musí být u této knihovny explicitně zakázáno.
Jak už bylo řečeno v úvodu, ne všechny části standardní knihovny byly od počátku k dispozici. Bylo tomu tak především proto, že Sun neměl autorská práva na všechny části JDK a nedohodl se s jejich vlastníky na uvolnění pod svobodnou licencí. Z toho důvodu byla zveřejněna i malá uzavřená část, aby byl výsledek 100% kompatibilní – samotné OpenJDK by takto nebylo většinou distribucí považováno za open source. Navíc jediné JDK schopné přeložit OpenJDK bylo to od Sunu.
Proto vývojáři společnosti Red Hat založili projekt IcedTea, který odstraňoval závislost právě na těchto proprietárních částech. Části chybějící standardní knihovny pocházely z projektu GNU Classpath: nahrazení věcí jako správa barev open source variantami a projekt rovněž poskytl standardní cestu pro překlad OpenJDK přes autotools, která byla nezbytná mimo jiné pro podporu pro bootstraping projektu pomocí gcj. Poté, co Red Hat podepsal Sun Contributor Agreement, otevřela se tím cesta pro patche z projektu IcedTea do projektu OpenJDK, což pomohlo k rychlejšímu nahrazení zbývajících proprietárních částí. Projekt IcedTea nicméně existuje dodnes, protože poskytuje mnoho užitečných vlastností.
Díky wrapperům nad existujícím Makefile je překlad OpenJDK pomocí IcedTea daleko flexibilnější. Navíc tento způsob usnadňuje aplikaci patchů IcedTea, zapínání různých vlastností a podobně.
Implementace Java Web Start a Java plugin – tyto technologie nejsou součástí Java SE a nebyly nikdy uvolněny. IcedTea tedy má vlastní implementaci, původně založenou na gcjwebplugin a od té doby několikrát přepsanou. Není bez zajímavosti, že právě IcedTea plugin přinesl nativní 64bit verzi dříve než Sun.
Samotný HotSpot, jako nejdůležitější část JVM, je psaný ve směsici assembleru a C++. Takový kód se nedá jednoduše portovat na jiné platformy. V rámci projektu IcedTea byl vytvořen tzv. Zero assembler, který odstraňuje nutnost používat assembler a umožňuje přeložit OpenJDK na jiných než původně podporovaných architekturách. Shark JIT je potom LLVM Just in time compiler pro Zero, který řeší výkonovou stránku problému. Jak Zero assembler, tak i Shark byly postupně začleněny do JDK7 a 6.
Mimochodem IcedTea podporuje překlad OpenJDK s jiným JVM, například CACAO.
Značná část IcedTea se točí kolem dodatečných patchů – příkladem může být odstranění podpory pro Motif, podpora pro PulseAudio nebo systemtap. Další, už poněkud méně vzrušující část, pokud nejste distributor, jsou backporty oprav bezpečnostních a kritických chyb nacházející se v dané verzi OpenJDK.
Jak bylo řečeno v úvodu, pojem Java je rovněž ochranná známka společnosti Oracle. Ta vyžaduje, aby se tento termín (respektive Java SE) vztahoval pouze na software, který projde přísným regresním testováním: Java Compatibility Test. Tato „maličkost“, tak nedůležitá pro běžné linuxové hackery, je životně důležitá, pokud hovoříme o enterprise nasazení. V dobách před OpenJDK existovala pouze read-only verze testů, jejichž licence nedávala právo je přeložit a spustit. Společnosti hodlající distribuovat Java (SE) implementaci si musely patřičné právo zakoupit.
V roce 2007 požádala Apache Software Foundation společnost Sun o poskytnutí testů kompatibility pro Java SE 5, které jsou specifikací této platformy vyžadovány – každá implementace tvrdící, že je Java SE 5, musí těmito testy projít. Zakoupení licence by situaci nijak nevyřešilo, protože by se ASF dostala ke staré známé závislosti otevřeného software na uzavřeném. Reakce Sunu byla, že se společnost snaží především o uvolnění zdrojových kódů JDK pod GPL, tak i příslušných testů. Mezi členy JCP, které kritizovaly Sun za neuvolnění licenčních podmínek, byly mimo jiné společnosti IBM a Oracle.
Zdrojové kódy JDK zveřejněny byly a pro JCK testy byla vydána doplňující licence, která umožňuje použití testů pro pro GPL implementace vycházející z OpenJDK. Tímto krokem Sun vyšachoval Apache Harmony z enterprise světa. V roce 2010 už pod taktovkou Oracle došlo k další ráně pro Apache Harmony. Společnost IBM, jakožto největší přispěvatel projektu, oznámila přesun svého zájmu od Apache Harmony k projektu OpenJDK. A důvod? Právě uzavřené TCK testy, které z Harmony činí v praxi nepoužitelnou implementaci.
Pozornosti společnosti Oracle neušel ani Google se svým Dalvik VM a Java API. Přestože byl Google opatrný a všude prohlašoval, že Andorid/Dalvik není v žádném případě Java a že se jedná o clean-room implementaci, čelí nyní žalobě za porušení bezpočtu patentů, copyrightu a intelektuálního vlastnictví, které Oracle momentálně vlastní. Jedním z argumentů je například skutečnost, že Eric Schmidt se přesunul do společnosti Google ze společnosti Sun, kde vedl Java tým. Není bez zajímavosti, že jedním z argumentů společnosti Google je, že použili zdrojové kódy projektu Harmony právě proto, že ASF nedokáže získat TCK testy, tudíž se o Javu nejedná.
OpenJDK splňuje všechny náležitosti otevřeného projektu: k dispozici jsou zdrojové kódy a dokonce i verzovací systém. Podepsání contributor agreement vyžaduje mimo Oracle i takové FSF, anebo Cannonical. Potud je to otevřený (dokonce svobodný) software. Můžete psát patche, portovat na nejrůznější platformy, studovat kód a podobně.
Na straně druhé Sun i Oracle poměrně aktivně vystupují proti ostatním svobodným implementacím, protože jejich největší zbraně – TCK a označení Java – jsou schovány za hradbou duševního vlastnictví, patentů a copyrightů.
Nástroje: Tisk bez diskuse
Tiskni Sdílej:
bylo by zaručeno, že long bude mít atomický přístupJMM.
long
deklarovaný volatile
(a taky double
) je atomický. Ale pokud přemýšlíš, že bys to začal dělat pokaždé, tak upozorňuju, že to nechceš.
pro indexaci polí by se nepoužíval intTo jako aby šel namapovat soubor do pole a nemusela se na to používat speciální třída? Ale je fakt, že pořádná "numerical tower" chybí.
měla něco jako ukazatel na funkci
MethodHandle
od Javy 7 a uzávěry od Javy 8.
Není to úplně nejblbější jazykJá mám v Javě pár let a pár set tisíc řádků odprogramováno a řekl bych, že je to dost blbý jazyk
long deklarovaný volatile (a taky double) je atomickýOno je volatile v javě, to jsem nevěděl. Dík za tip.
Ale pokud přemýšlíš, že bys to začal dělat pokaždé, tak upozorňuju, že to nechceš.Kdybych to nepotřeboval ve vícevláknových aplikací, tak by mi atomičnost byla na 2 věci (když nebudu počítat posixový signály, které asi java nevede)
volatile
dělá taky to, že každé čtení a každý zápis znamená bariéru, což bude na tvůj vkus strašlivě zpomalovat Poohlídni se v java.util.concurrent
, dost možná tam najdeš něco, co se snažíš naprogramovat sám. Pokud ti opravdu jde čistě o atomický long
, bez atomického CAS apod., tak volatile long
je trochu lepší volba než AtomicLong
, ale tím to tak končí.
Mimochodem, signály se dají použít taky, sun.misc.Signal
a sun.misc.SignalHandler
.
Já mám v Javě pár let a pár set tisíc řádků odprogramováno a řekl bych, že je to dost blbý jazykŘekl bych, že to platí skoro o každém jazyku. Ze začátku se mi zdálo C++ super, teď už ho považuji za blbý jazyk (přesto můj nejoblíbenější). To samé o Javě. Teď zrovna jsem ve stavu, kdy se mi zdá jako docela slušný jazyk C#, ale předpokládám, že ve chvíli, kdy v něm něco víc napíšu tak se taky přesune do kategorie blbý jazyk.
byte
, 32 bitů do proměnné typu int
– pořád tam nevidím ten problém.
byte
je znaménkový. Na první pohled to vypadá jako drobnost, ale už třeba pokud o porovnání hodnot znamená tvrdý náraz (130 < 100).
Takže mám pořád pocit, že absence neznaménkových typů v Javě se hodí akorát tak do teoretických diskusí, a ve skutečnosti při programování s tím ještě nikdy nikdo žádný problém neměl.Pocit chápu, ale v realitě je to zcela naopak: v teoretických diskusí je to úplně jedno a neznaménkové typy můžeme klidně zahodit jako zbytečné, v realitě se pak problémy (ve formě bugů) objeví překvapivě často.
Pocit chápu, ale v realitě je to zcela naopak: v teoretických diskusí je to úplně jedno a neznaménkové typy můžeme klidně zahodit jako zbytečné, v realitě se pak problémy (ve formě bugů) objeví překvapivě často.Zvláštní je, že to „překvapivě často“ se zatím v několika diskusích nepřetavilo do nějakého konkrétního příkladu „tady jsem s tím měl problém“. Místo toho pokaždé někdo vymýšlí, kde by to asi mohlo problém způsobit.
Aha no chapu, ale popravde jsem se s takovym pozadavkem jeste NIKDY nesetkal, protoze ten soubor prece byva nejak strukturovany ne?ja to chapu a poprve jsem se s necim takovym setkal az tady. osobne, kdybych mel pracovat s necim tak velkym, tak si to stejne mapuju do pameti po castech, vzdy podle toho s cim pracuju nebo, podle toho, co dava logicky smysl. jeste by me teda zajimalo, jak velkou rezii bude mit sprava tak velkych mapovanych useku z pohledu jadra.
uz jsem videl par skriptu (v Perlu), ktere resily nejakou obdobu vyhledavani/grepovani v logu takovym zpusobem, ze nejprve nacetly celej soubor do pameti a potom iterovaly pres jednotlive radkyAle to nemusí být nutně špatné řešení. Např. ve chvíli, kdy je načítání souboru náročné (jako log na vzdáleném počítači), kdy je soubor použit několikrát (jako několik hledání) atd. Záleží, co člověk potřebuje, záleží, co člověk má za počítač atd.
Mezi členy JCP, které kritizovaly Sun za neuvolnění licenčních podmínek, byly mimo jiné společnosti IBM a Oracle.Zmenila se situace, tak se zmenil postoj firmy (zde Oracl) ... nic prekvapujiciho :D , ale Jak tak ctu, co je v pozadi javy a hl. od te doby co mam ARM a na nem zkusenosti s javou a vykonem napr pythonu, tak si rikam, ze je na case se zase kounout na jazyk Vala.
Tak teď nevím no. Ale třeba tady Apache ten článek potvrzuje.V čem konkrétně? Například odkazovat se na licenci binárního JDK je v kontextu celého článku nesmysl. Bez splnění TCK testů nemůžeš říkat svojí implementaci Java (SE Platform). A používáním alternativních implementací se vystavuješ riziku žaloby Oracle za používání svého IP, jako se to stalo společnosti Google.
Navíc, kdyby s těmi patenty a omezením pro mobilní zařízení nebyl problém, tak proč pak Google pro Android nezvolil bezpečněji OpenJDK místo Harmony?Netuším, proč Google zvolil Harmony a ne OpenJDK. Pravděpodobně proto, že je pod méně restriktivní licencí a nevyžaduje podepsání Copyright Assigment, jako OpenJDK. Nicméně technicky tam žádné problémy nejsou, protože ani Harmony nebyl nikdy zamýšlen jako implementace J2ME, ale Java SE. Proto jsou veškeré stížnosti na TCK a mobilní telefony nesmysl, protože k tomu ty testy nikdy nebyly určeny. Jádrem celého sporu Oracle versus Google je podle mě to, že Oracle chce fakticky zabít Apache Harmony a i budoucí alternativní implementace svojí platformy a ponechat OpenJDK, jako jedinou možnost.