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.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.
Byla vydána nová verze R14.1.4 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání. Podrobný přehled v Changelogu.
Bylo vydáno OpenBSD 7.7. Opět bez písničky.
Tento krátký esej vznikl jako úkol do předmětu Advanced Java Programming, který letos opět učil pan Roman Szturc z Vysoké Školy Báňské, na Univerzitě aplikovaných věd v Jyväskylä, kde momentálně studuji. Rozhodl jsem se jej zde zveřejnit, snad v něm někdo zajde něco zajímavého. Je mi jasné, že se nejedná o žádné veledílo, a jistě také obsahuje množství nepřesností nebo chyb, pokud budete chtít, neváhejte napsat svůj názor. Doufám, že než další flame na nějaké profláklé téma, tady spíše případně vznikne zajímavá diskuze
Takže zde je esej, v původním znění, bez titulků, pouze se zjednodušeným formátováním aby šel vložit na abíčko:
This short essay was written as optional work to "Advanced Java" course taught in winter semester on Jyväskylä university by Mr. Roman Szturc (Technical University of Ostrava). Given topic was "Future of Java" and I will mostly concentrate on topic which I find quite interesting, and that is usage of native operating system facilities in Java in general, as well as support for usage of native GUI components in desktop applications.
Java was from its origin intended as platform independent language. SUN has always put great emphasize on portability ("Write once, run anywhere"), which is of course very usable and important feature, but it also brings some disadvantages - one of most painful is sometimes quite bad performance [1) I don't intend to spread the "java is slow" FUD, theese days java performance is generally very good, but there's always something to improve, most notably regarding speed of GUI applications] It is of course not only caused by Java's portable nature, but also by other factors like increased type-checking etc. Still it's obvious that some things simply can't be made that efficient as in lower level languages. Another thing, which many users find annoying is different look of GUI applications written in Java. While this is not very obvious on Windows operating systems, for example on Linux difference is much more evident (this is also given by fact, that generally usage of various widget themes is very spread in world of Linux, and every major Linux vendor usually has it's own theme). And it's not only look, but also feel - one of most annoying things is usage of nonstandard file dialogs. Mentioned problems can be (at least partially) solved by usage of various operating system facilities and components. Why could not Java application executed under GNOME desktop environment use GTK widgets and file dialogs? Or QT under KDE? Why use poll() call, if under Linux 2.6 kernels is epoll(), which is much more efficient and scalable? Of course, these things seem to be against philosophy of Java, but when made properly, portability can be retained, while gaining new advantages.
Why so suddenly?While things have been slowly improving during all development of Java, it seems that development's gaining faster pace and things are improving much more these days (well, not exactly days of course, this is visible for longer time, but compared to all Java's lifetime, it's obvious that SUN's striving much more now). What happened? In my opinion there are two reasons: One of them is of course aggressive onset of Microsoft .NET platform. Microsoft took good care not to repeat many of java's childhood errors, and it's indisputable that .NET is very good platform, even though it has some vices. So SUN has to try hard to retain position it acquired and to grow even more. Second reason is increasing popularity of IBM supported open-source IDE platform Eclipse and other applications using SWT toolkit (ie Azureus). While SUN kept complaining that whole SWT philosophy is against Java principles, they must have realized that SWT applications have one big advantage over AWT or SWING ones: much better integration. Support for themes, native file dialogs, "native behavior", systray support - those are properties standard Java GUI applications supported only poorly, if at all.
What's new and what's to be expectedAs it was already fore-mentioned, two main topics will be briefly covered in this essay. One of them is usage of native low-level operating system facilities resulting various performance improvements etc, and other is better integration of desktop applications, regarding GUI look & feel. Finally some notes about usage of libraries and frameworks written in other languages then Java will be mentioned.
Usage of advanced operating system facilitiesJava have of course always used various services provided by operating system (not everything can be done by JVM - things like low-level networking, disk access, etc). And NIO package introduced in Java 1.4 proved, that extensive usage of those services can bring considerable improvement of performance. While some of the changes were made so to say "under the hood", bringing improved performance by optimizing of functionality of various existing classes (ie in package java.io.*), other brought brand new possibilities (techniques widely used for example in UNIX systems - memory mapped files, scatter-gather, etc). Java 1.5.0 has not brought any special news in this area, but there are some new interesting features in coming java 1.6.0. One of them is support of epoll() system call in implementation of NIO Selector, on systems running Linux 2.6 kernels. On Linux epoll() can be used to substitute traditional poll() event polling mechanism. This can greatly improve performance in some cases (users have reported even 95% CPU usage reduction in some cases with tens of thousands simultaneous connections). Interesting thing is, that this feature has for quite long time been already implemented in Blackdown java implementation and it's also not first such improvement in SUN's java - implementation of JVM on Solaris has been using improved it's specific /dev/poll mechanism for long time. I think that this kind of improvements is very useful, because it can bring considerable performance improvements, while retaining portability - on platforms which support more advanced resources, those are used, on platforms which don't, those are emulated or done in standard way and developers don't have to care about it - all is transparent.
Improvements in area of desktop applicationsAs was already stated, SWT toolkit is becoming very popular, and widespread. As some of it's features are arguable, it's obvious that it brings a lot of advantages, and has been taken very well by users. And of course many common users don't really care about philosophy - they simply want solutions that work well for them. So instead of whining, SUN finally decided to counter in best possible way - by improving Java's weak areas. So lots of new features and improvements have been announced in upcoming Java 1.6 (Mustang), most of them can already be tried using publicly available beta versions.
Look and feelSo finally it seems that even swing applications will look and behave more "native" even under operating systems other then MS Windows. Linux users will probably be happy to find, that native support for GTK toolkit has already been integrated to Mustang. So Swing applications will be able to properly use user's selected theme, and also things like file selection dialogs should not be different now. Of course people using KDE desktop environment or people who simply prefer QT applications still won't be very happy, because there is no support for native usage of their preferred toolkit, and it even can't be expected (at least not soon), because QT is freely available only under more "aggressive" GPL license, while GTK is available under LGPL license. Only two possibilities would be, that either Java would be released under GPL compatible license, or SUN would pay for commercial license of QT toolkit. Well, neither of choices seems to be very likely, but who knows, maybe time will bring some surprises.
Notification area (systray) supportWhile it became quite bad habit, that virtually every MS Windows application has to use some kind of systray integration without real need, sometimes it can be useful. Especially for applications that are usually running for long time with only occasional user's interaction, like download programs, music players etc. SWT toolkit already supported systray integration, and it works well at least under both Windows and Linux (for example popular bittorrent client Azureus supports that), and now Mustang supports it too.
Something for gamersGames (and generally multimedia) are kind of applications, which are usually especially performance demanding. For this reason, usage of various hardware acceleration features is very important. While this can be of course all implemented purely in Java, using only low level operating system drivers, it probably is not the best possible way. Smart combining of Java with libraries written in lower level languages can bring surprising results.
JOGLJOGL is Java binding to popular OpenGL library. OpenGL is widely used open standard for three dimensional graphics and years of usage in various applications like games, but also more professional software like CAD systems has proved it to be very mature. It brings support for various features provided by modern graphics cards and hardware vendors take good care so all of them are well supported in drivers and also OpenGL libraries, because of big popularity of games. [2) this is unfortunately really true only for MS Windows platform, support for other systems is sometimes bit worse. While Nvidia is quite OK, ATI support really sucks.] Examples on the project webpage are quite nice, but what is really impressive is Jake 2 project. Jake 2 is reimplementation of ID software's open-sourced game Quake 2, done purely in Java, using JOGL (and also JOAL, more on it later). Very interesting is comparison of frames per second achieved in Jake 2 and in original C version of game. It shows, that not only Java version has almost as good performance as C one, but in some cases it even outperforms it. Of course this is not 100% fair, as Java version probably already contains optimizations not contained in original game, but important is that it IS possible to make games in java.
JOALJOAL is java binding for OpenAL library. Similarly to OpenGL, OpenAL is library for advanced sound support, including various effects, three dimensional sound support etc. It supports usage of hardware accelerated effects provided by modern sound cards. While JOAL can't of course provide such impressive examples as JOGL, it can still be considered very useful. Between others, JOAL is also used by Jake2 project.
ConclusionAs it was fore-mentioned, increasing pressure of Microsoft's .NET platform, IBM products, and also various free solutions (like aggressive pushing of free and open-source implementations of various Java software, starting with JVM self [3) though here it's something little different, because tools like GCJ are used, compiling java not only to byte-code, but also into native binaries], Eclipse and application servers by Red Hat and other vendors) is forcing SUN to try harder and speeding up development. And it is for sure good for both end-users and developers.
Related links:http://blogs.sun.com/roller/page/alanb?entry=epoll
http://download.java.net/jdk6/docs/api/java/nio/channels/Selector.html
http://ensode.net/java_swing_mustang_screenshots_gtk.html
https://jogl.dev.java.net/
https://jogl-demos.dev.java.net/
https://joal.dev.java.net/
http://www.bytonic.de/html/jake2.html
Tiskni
Sdílej:
navyse, JNI ta priviaze na tu jednu konkretnu platformu. Nevraviac o tom, ze vyuzivanie action-handlerov v konecnom dosledku vedie k mnozstvu anonymnych tried.
pre mna osobne je java prilis obmedzujuca. je to jazyk pre drevorubacov.
uznavam, navrhnut vykonny jazyk s cielmi povodne propagovanymi javou je tazke, v konecnom dosledku by sa clovek dostal k MVC, kde M a V su len deklarativne, interpretovane jazyky. Skutocna prenositelnost (v mojom pohlade) znamena, ze rozne casti systemu dokazes prenasat medzi roznymi dodavatelmi, ze mas jednoznacne a otvorene definovany kazdy interface. tuna imho je velky priestore pre open-source teoretikov )
k obsahu eseje?Myslim ze tak hrozne to neni, pokud zrovna nejde o veci jako zminovany JOGL/JOAL, tak minimalne Free BSD a MacOSX jsou v pohode (a na MacOSX bezi ostatne i ty knihovny a zminovany Jake. Pokud jde o cistou javu, tak myslim ze prenositelnost je velice slusna.moj osobny nazor je, buducnost javy nesie skratku rip. ono, povodne motto sa zmenilo na "write once, run on 4 platforms" (Linux x86, Solaris x86, Solaris SPARC, windos x86).
navyse, JNI ta priviaze na tu jednu konkretnu platformu. Nevraviac o tom, ze vyuzivanie action-handlerov v konecnom dosledku vedie k mnozstvu anonymnych tried.ale to nepopiram, take to ostatne zminuju, ale jak rikam, pokud napisete ciste javovou aplikaci, tak na tento problem nenarazite. a aplikaci vyuzivajicich JNI opravdu zas tak moc neni...
pre mna osobne je java prilis obmedzujuca. je to jazyk pre drevorubacov.tak k tomu nevim co bych napsal, nevim jaka omezeni mate na mysli (i kdyz spousty jsem si samozrejme vedom ;)
Skutocna prenositelnost (v mojom pohlade) znamena, ze rozne casti systemu dokazes prenasat medzi roznymi dodavatelmi, ze mas jednoznacne a otvorene definovany kazdy interface.Ale toto je prave podle mne neco co v jave funguje docela solidne. Neni to ani tak o jazyku, jako spise o podpore tech rozhrani dodavateli, coz samozrejme vzdycky trosku skripe, protoze to nikdo z nich doopravdy nechce. Ale s javou zde myslim fakt neni problem, a ostatne pri rozumnem pouziti reflexe toto muze fungovat i kdyz treba rozhrani nejsou uplne stejna, nebo nektere komponenty implementuji i neco navic. Krasna ukazka myslim je, ze je ve vyvoji API, ktere umozni pouzivat mnozstvi pluginu jak pod eclipse, tak pod netbeans. Az tohle bude fungovat, tak to bude opravdu fajn...
Myslim ze tak hrozne to neni, pokud zrovna nejde o veci jako zminovany JOGL/JOAL, tak minimalne Free BSD a MacOSX jsou v pohode (a na MacOSX bezi ostatne i ty knihovny a zminovany Jake. Pokud jde o cistou javu, tak myslim ze prenositelnost je velice slusna.ono aj ciste C alebo C++ je prenositelne velmi slusne
tak k tomu nevim co bych napsal, nevim jaka omezeni mate na mysli (i kdyz spousty jsem si samozrejme vedom ;)ok, veci ktore mi vadili (javu od verzie 1.5 uz nesledujem, mozno sa nieco pomenilo alebo chysta zmenit)
Ale toto je prave podle mne neco co v jave funguje docela solidne. Neni to ani tak o jazyku, jako spise o podpore tech rozhrani dodavateli, coz samozrejme vzdycky trosku skripe, protoze to nikdo z nich doopravdy nechce. Ale s javou zde myslim fakt neni problem, a ostatne pri rozumnem pouziti reflexe toto muze fungovat i kdyz treba rozhrani nejsou uplne stejna, nebo nektere komponenty implementuji i neco navic. Krasna ukazka myslim je, ze je ve vyvoji API, ktere umozni pouzivat mnozstvi pluginu jak pod eclipse, tak pod netbeans. Az tohle bude fungovat, tak to bude opravdu fajn...hej? vyskusajte si pouzivat rozne J* interface z inych programovacich jazykov
ono aj ciste C alebo C++ je prenositelne velmi slusnejakou migraci mate na mysli? popularni javove programy se vetsinou pouzivaji na vsem moznem (windows, linux, macky), takze ani v realu to nebude tak spatne ;). i kdyz uznavam, ze existence separatnich balicku pro ruzne platformy trochu vypovida i o tom, ze to neni uplne bez problemu. i kdyz casto jde jen o ruzne instalatory atd.. nemal som na mysli teoreticku schopnost jazyka, ale realnu migraciu programov.
ok, veci ktore mi vadili (javu od verzie 1.5 uz nesledujem, mozno sa nieco pomenilo alebo chysta zmenit)no nektere z tech veci uz jsou opravdu resene prave v 1.5, ale to Vas uz asi nenalaka co?
chybajuci overloading operatorovto je jedna z veci ktera podporovana neni, a myslim ze nejspis ani nebude. osobne prinos pretezovani operatoru povazuju za minimalne diskutabilni, i kdyz nekomu to asi muze chybet...
zakladne typy nie su objekty, objektove reprezentacie sa nedaju zmysluplne pouzit v algoritmochto je prave jedna z veci ktere v 1.5 doznaly vcelku podstatnych zmen...
chybajuca viacnasobna dedicnost. kazdy projekt, na ktorom som pracoval, trpel problemom cut&paste prave kvoli tomuto. samozrejme, da sa to vyriesit odsunutim implementacie metody do inej triedy, ale ta rezia ...)k vicenasobne dedicnosti asi tolik co k pretezovani operatoru. v jave k tomu proste slouzi implementace rozhrani a oddelene tridy, jak jste napsal. ze by si nekdo stezoval na prilis velkou rezii vidim poprve, i kdyz nejaka jiste bude...
absencia premenliveho poctu argumentov - napriklad inicializializacia hashtablepromenne pocty argumentu uz jsou take podporovane, i kdyz jestli primo podpora v hashtables ani nevim...
striktna previazanost jeden subor, jedna public trieda a opacne - v konecnom dosledku to viedlo k zdrojakom velkosti radovo desiatky kB. tu by som navrhoval moznost implementovat jednotlive metody v separatnom suborenevim, ja se vzdycky snazim skladat kod spise z mensich fragmentu, i kdyz vzdycky to asi taky neni mozne. ale ani obrovske tridy mi zase problemy nedelaji, ale dokazu si predstavit ze pro lidi co jsou zvykli na editory jako vim to nemusi byt pohodlne (no flame prosim, poukazuju jen na to, ze existence ruznych outline pohledu a podobne v nastrojich jako eclipse nebo netbeans tohle proste hrozne usnadnuje)
hej? vyskusajte si pouzivat rozne J* interface z inych programovacich jazykovtak to moc nechapu, o prenositelnosti na jine jazyky jsem vubec nemluvil. i kdyz uznavam ze tohle je jedna z velkych vyhod .NET oproti jave. v jave sice existuje spousta projektu na podporu vseho mozneho, ale AFAIK pouze python se nejak vice pouziva. ale v 1.6 uz by to melo byt lepsi, zahledl jsem zminky o oficialni podpore pythonu, perlu a javascriptu (proc javascript osobne moc nechapu). nicmene v tomhle je .NET asi mnohem dal, protoze uz to bylo soucasti navrhu. jestli je to dobre nebo spatne si ale uplne 100% jisty taky nejsem. no nic, jdu taky neco delat
ale dokazu si predstavit ze pro lidi co jsou zvykli na editory jako vim to nemusi byt pohodlne (no flame prosim, poukazuju jen na to, ze existence ruznych outline pohledu a podobne v nastrojich jako eclipse nebo netbeans tohle proste hrozne usnadnuje)Příště prosím nezmiňovat vim, ale vybrat si omezenější editor
thready? thready sux, 99,999% programatorov nevie programovat multithreadove aplikacie, takze je lepsie (a castokrat s lepsim vykonom) pouzivat oddelene aplikacie.
priklad: mam server s 1000 paralelnymi konexiami. co pouzijete? 1 thread a 1 poll s neblokujucimi socketmi alebo 1000 threadov a blokujucimi socketmi ?
neblokujuce je tazsie, tam si treba pamatat stav, treba viac osetrovaciek, narocnejsi parser protokolu ...
a tak
Je až neuvěřitelné, jak tuhý má Java život. Byla určena pro průmyslovou automatizaci, ovšem procesory co interpretovaly Java bytecode v mikrokódu byly ve srovnání s čímkoliv rozumným (RISCy) příliš pomalé a žravé, tak to po zásluze chcíplo.no jak je to s podporou prumyslovych zarizeni moc nevim, ale na mobilech se jave myslim dari v posledni dobe celkem dobre