{"id":1193,"date":"2023-02-22T07:46:59","date_gmt":"2023-02-22T11:46:59","guid":{"rendered":"https:\/\/jausoft.com\/blog\/?p=1193"},"modified":"2023-02-28T22:37:47","modified_gmt":"2023-03-01T02:37:47","slug":"reimagine-java-on-desktop-bare-metal-devices","status":"publish","type":"post","link":"https:\/\/jausoft.com\/blog\/2023\/02\/22\/reimagine-java-on-desktop-bare-metal-devices\/","title":{"rendered":"Reimagine Java on Desktop &#038; Bare-Metal Devices"},"content":{"rendered":"<p>The vision and reimagination is to unite forces and bring back Java UI on bare-metal embedded devices, mobile and desktop. In the lasts months and years, I have sadly seen companies revoking their commitment and trust in Java in regards to <em>Human Machine Interface (HMI)<\/em> or <em>User Interface (UI)<\/em> applications.<!--more--><\/p>\n<p>This is due to Oracle having essentially dropped the &#8216;Java Desktop&#8217; &#8230; etc. <em>(long debate, adding OpenJFX)<\/em><\/p>\n<p>However, Java as a language with a fully managed memory model is still part of the<br \/>\n<em>(politically)<\/em> supported recommended languages <a href=\"https:\/\/www.nist.gov\/itl\/executive-order-14028-improving-nations-cybersecurity\/recommended-minimum-standards-vendor-or\">from NIST <\/a><em>(<a href=\"https:\/\/media.defense.gov\/2022\/Nov\/10\/2003112742\/-1\/-1\/0\/CSI_SOFTWARE_MEMORY_SAFETY.PDF\">controversy<\/a> and <a href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2023\/p2759r0.pdf\">debated<\/a> <a href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2023\/p2739r0.pdf\">in the C++<\/a> <a href=\"https:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2022\/p2687r0.pdf\">community<\/a>).<\/em><\/p>\n<p>In this regard, I created <a href=\"https:\/\/jausoft.com\/blog\/2023\/02\/12\/graph-type-rendering-update-1\/\">my initial blog entry<\/a> regarding <a href=\"https:\/\/jausoft.com\/blog\/tag\/graph_type_rendering\/\">immersive UI + 3D scene<\/a> on the desktop, mobile and on<em> bare-metal embedded systems<\/em> without a windowing system.<\/p>\n<p><strong><em>Graph UI<\/em> utilizes <a href=\"https:\/\/jausoft.com\/blog\/2011\/10\/05\/jogljogamp-red-square-moscow-nurbs-graphicon2011\/\">Resolution Independent NURBS Curves Rendering using Programmable Graphics Pipeline<\/a>, i.e. rendering curves directly on the GPU, resolution independent <\/strong>[ <a href=\"https:\/\/jogamp.org\/doc\/gpunurbs2011\/p70-santina.pdf\">paper<\/a>, <a href=\"https:\/\/jogamp.org\/doc\/gpunurbs2011\/graphicon2011-slides.pdf\">slides<\/a> ]. This method allows us to to have an ultimate fast font and UI rendering engine, suitable for all devices and applications. No CPU based curve nor font pre-rendering (matching a target resolution) is required.<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/GraphUIDemo-shot002-1280x720-S_vbaa_04.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1201\" src=\"https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/GraphUIDemo-shot002-1280x720-S_vbaa_04.png\" alt=\"\" width=\"1280\" height=\"720\" srcset=\"https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/GraphUIDemo-shot002-1280x720-S_vbaa_04.png 1280w, https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/GraphUIDemo-shot002-1280x720-S_vbaa_04-300x169.png 300w, https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/GraphUIDemo-shot002-1280x720-S_vbaa_04-1024x576.png 1024w, https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/GraphUIDemo-shot002-1280x720-S_vbaa_04-768x432.png 768w, https:\/\/jausoft.com\/blog\/wp-content\/uploads\/2023\/02\/GraphUIDemo-shot002-1280x720-S_vbaa_04-1088x612.png 1088w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/a><em>(click on image for normal resolution, 1280&#215;720)<\/em><\/p>\n<p>&nbsp;<\/p>\n<p>And here is a little screen recording with audio &#8230;<\/p>\n<p>&nbsp;<\/p>\n<div style=\"width: 640px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-1193-1\" width=\"640\" height=\"360\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/jausoft.com\/Files\/media\/20230222-GraphUINewtDemo.mp4?_=1\" \/><a href=\"https:\/\/jausoft.com\/Files\/media\/20230222-GraphUINewtDemo.mp4\">https:\/\/jausoft.com\/Files\/media\/20230222-GraphUINewtDemo.mp4<\/a><\/video><\/div>\n<p style=\"text-align: center;\"><em>(Use <a href=\"https:\/\/jausoft.com\/Files\/media\/20230222-GraphUINewtDemo.mp4\">this link to download or click to view in normal 1280&#215;720 resolution<\/a>)<\/em><\/p>\n<p>&nbsp;<\/p>\n<p>This is included in <a href=\"https:\/\/jogamp.org\/wiki\/index.php?title=SW_Tracking_Report_Feature_Objectives_Overview#Graph_UI\">JogAmp&#8217;s feature and todo list<\/a>.<\/p>\n<p><a class=\"external text\" href=\"https:\/\/jogamp.org\/bugzilla\/show_bug.cgi?id=1156\" rel=\"nofollow\">DRM\/GBM as support for JOGL + NEWT<\/a> has been added, hence we are capable of running on a bare metal device without a windowing system. Here is <a href=\"https:\/\/ict.zafena.se\/improved-graphical-information-technology\/\">Xerxes demonstrating this feature on a Raspberry Pi4<\/a>:<\/p>\n<p>&nbsp;<\/p>\n<div style=\"width: 640px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-1193-2\" width=\"640\" height=\"360\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/jausoft.com\/Files\/media\/RaspberryPi4-JogAmp-2.4.0-HDMI0-console-test.mp4?_=2\" \/><a href=\"https:\/\/jausoft.com\/Files\/media\/RaspberryPi4-JogAmp-2.4.0-HDMI0-console-test.mp4\">https:\/\/jausoft.com\/Files\/media\/RaspberryPi4-JogAmp-2.4.0-HDMI0-console-test.mp4<\/a><\/video><\/div>\n<p>&nbsp;<\/p>\n<p>Also of interest might be a related discussion within a <a href=\"https:\/\/jogamp.org\/bugzilla\/\/show_bug.cgi?id=607#c20\">OpenJFX bug entry regarding re-merging JOGL w\/ OpenJFX<\/a>.<\/p>\n<p>Bottom line, it might <strong>help the Java community to reimagine and revision the UI across devices<\/strong>.<\/p>\n<p>Perhaps we can join efforts and also allow this endeavor to help sustaining my JogAmp work in this regard.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The vision and reimagination is to unite forces and bring back Java UI on bare-metal embedded devices, mobile and desktop. In the lasts months and years, I have sadly seen companies revoking their commitment and trust in Java in regards to Human Machine Interface (HMI) or User Interface (UI) applications.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[7,3,8],"tags":[9,27,13,22,71,16,44,31,17,46,25,68],"class_list":["post-1193","post","type-post","status-publish","format-standard","hentry","category-3d-opengl","category-computer-stuff","category-jogamp","tag-3d","tag-android","tag-embedded-device","tag-fonts","tag-graph_type_rendering","tag-java","tag-jogamp","tag-mobile","tag-opengl","tag-openjdk","tag-security","tag-type-rendering"],"_links":{"self":[{"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/posts\/1193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/comments?post=1193"}],"version-history":[{"count":18,"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/posts\/1193\/revisions"}],"predecessor-version":[{"id":1224,"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/posts\/1193\/revisions\/1224"}],"wp:attachment":[{"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/media?parent=1193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/categories?post=1193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jausoft.com\/blog\/wp-json\/wp\/v2\/tags?post=1193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}