<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Home on codebase</title>
    <link>https://codebase.zone/</link>
    <description>Recent content in Home on codebase</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Wed, 15 Jul 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://codebase.zone/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>useful add-ons</title>
      <link>https://codebase.zone/techdoc/linux/shell/add-ons/</link>
      <pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/add-ons/</guid>
      <description>&lt;p&gt;This is a collection of useful CLI utilities, which usually are not by default installed by GNU/Linux distributions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>starting Payara Micro</title>
      <link>https://codebase.zone/techdoc/jakarta-ee/app-server/payara-micro/starting/</link>
      <pubDate>Fri, 21 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/jakarta-ee/app-server/payara-micro/starting/</guid>
      <description>&lt;h1 id=&#34;starting-payara-micro-from-the-command-line&#34;&gt;starting Payara Micro from the command line&lt;/h1&gt;&#xA;&lt;p&gt;Here are the command line parameters that I use most often when starting Payara Micro:&lt;/p&gt;</description>
    </item>
    <item>
      <title>quick client setup walkthrough</title>
      <link>https://codebase.zone/techdoc/linux/setup/network/client-quick/</link>
      <pubDate>Tue, 18 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/network/client-quick/</guid>
      <description>&lt;p&gt;This walkthrough is for a quick client machine network setup by hand. The examples are for a fictive client machine with&#xA;the following client and network values:&lt;/p&gt;</description>
    </item>
    <item>
      <title>boot process on UEFI platforms</title>
      <link>https://codebase.zone/techdoc/linux/setup/kernel/uefi/uefi-boot/</link>
      <pubDate>Thu, 13 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/kernel/uefi/uefi-boot/</guid>
      <description>The UEFI specification is no fun read and for some topics, I found it hard to understand. This document describes the boot process on UEFI platform from the moment a machine is powered up until the moment the OS takes control over the machine. I put this document together from information from the UEFI spec and some other sources. Running Intel CPU&amp;rsquo;s, I focus on the Intel platform here. Intel and AMD do take slightly different approaches during the early boot sequence, but the overall picture is the same.</description>
    </item>
    <item>
      <title>ANSI escape codes</title>
      <link>https://codebase.zone/techdoc/standard/ansi/</link>
      <pubDate>Wed, 08 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/standard/ansi/</guid>
      <description>&lt;p&gt;ANSI escape codes (more formally, ANSI escape sequences) are in-band signaling codes to control cursor location,&#xA;color, and a bunch of other options on command line terminals.&lt;/p&gt;</description>
    </item>
    <item>
      <title>psqlrc - the psql config file</title>
      <link>https://codebase.zone/techdoc/database/postgresql/psql/psqlrc/</link>
      <pubDate>Wed, 08 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/database/postgresql/psql/psqlrc/</guid>
      <description>&lt;p&gt;The configuration file for &lt;button class=&#34;emph emph-code&#34; disabled&gt;psql&lt;/button&gt; is &lt;button class=&#34;emph emph-file&#34; disabled&gt;psqlrc&lt;/button&gt;.&lt;/p&gt;&#xA;&lt;p&gt;There are several options for the location of the system-wide &lt;button class=&#34;emph emph-file&#34; disabled&gt;psqlrc&lt;/button&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>adding ssh keys for comfortable push/pull</title>
      <link>https://codebase.zone/techdoc/dev-tools/gitea/ssh-keys/</link>
      <pubDate>Fri, 29 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/dev-tools/gitea/ssh-keys/</guid>
      <description>&lt;p&gt;With your ssh public key registered with Gitea, you can push and pull to and from Gitea without being asked for your password&#xA;for every action.&lt;/p&gt;</description>
    </item>
    <item>
      <title>renaming the default branch of a repo in Gitea</title>
      <link>https://codebase.zone/techdoc/dev-tools/gitea/renaming-default-branch/</link>
      <pubDate>Fri, 29 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/dev-tools/gitea/renaming-default-branch/</guid>
      <description>&lt;p&gt;I was already tired for a while that the default repo name in git was &lt;em&gt;master&lt;/em&gt;. So I took the opportunity when&#xA;updating Gitea to rename the default branch of the corresponding git repos to &lt;em&gt;main&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>run Gitea behind a proxy</title>
      <link>https://codebase.zone/techdoc/dev-tools/gitea/gitea-behind-proxy/</link>
      <pubDate>Fri, 29 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/dev-tools/gitea/gitea-behind-proxy/</guid>
      <description>&lt;p&gt;This has the advantage that I don&amp;rsquo;t have to remember the port on which Gitea is running and can just type&#xA;&lt;button class=&#34;emph emph-code&#34; disabled&gt;https://idoru/gitea&lt;/button&gt; into my browser&amp;rsquo;s address bar.&lt;/p&gt;</description>
    </item>
    <item>
      <title>run Gitea with TLS</title>
      <link>https://codebase.zone/techdoc/dev-tools/gitea/tls/</link>
      <pubDate>Fri, 29 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/dev-tools/gitea/tls/</guid>
      <description>&lt;p&gt;You need two certificates: the certificate chain to the Root CA and the certificate for gitea.&#xA;I&amp;rsquo;m running an own root CA in my LAN (mostly for fun and educational purpose) and issued a cert for gitea.&lt;/p&gt;</description>
    </item>
    <item>
      <title>XBPS package manager</title>
      <link>https://codebase.zone/techdoc/linux/void/xbps/</link>
      <pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/void/xbps/</guid>
      <description>working with the XBPS package manager.</description>
    </item>
    <item>
      <title>date/time</title>
      <link>https://codebase.zone/techdoc/frontend/hugo/code-shreds/date-time/</link>
      <pubDate>Sun, 17 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/frontend/hugo/code-shreds/date-time/</guid>
      <description>&lt;h3 id=&#34;dateformat-works-only-for-secific-date&#34;&gt;dateFormat works only for secific date&lt;/h3&gt;&#xA;&lt;p&gt;the following works and renders on August 17th, 2025, the string &lt;button class=&#34;emph emph-code&#34; disabled&gt;2025-08-17&lt;/button&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>hugo new</title>
      <link>https://codebase.zone/techdoc/frontend/hugo/cli/hugo-new/</link>
      <pubDate>Sun, 17 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/frontend/hugo/cli/hugo-new/</guid>
      <description>&lt;div class=&#34;code language-shell&#34;&gt;&#xA;rudolf@idoru:/opt/intra/site/dev/codebase/content/techdoc/frontend/hugo/code-shreds(main)$ hugo new section.md&#xA;Error: no existing content directory configured for this project&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;button class=&#34;emph emph-command&#34; disabled&gt;hugo new&lt;/button&gt; only works as expected when invoked outside the content dir.&#xA;Additionally, the page kind is not automatically resolved but must be given with the argument &lt;button class=&#34;emph emph-command&#34; disabled&gt;-k &amp;lt;kind&amp;gt;&lt;/button&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>page</title>
      <link>https://codebase.zone/techdoc/frontend/hugo/code-shreds/page/</link>
      <pubDate>Sun, 17 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/frontend/hugo/code-shreds/page/</guid>
      <description></description>
    </item>
    <item>
      <title>section</title>
      <link>https://codebase.zone/techdoc/frontend/hugo/code-shreds/section/</link>
      <pubDate>Sun, 17 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/frontend/hugo/code-shreds/section/</guid>
      <description>&lt;h3 id=&#34;getting-a-section&#34;&gt;getting a section&lt;/h3&gt;&#xA;&lt;div class=&#34;code language-go&#34;&gt;&#xA;{{- $rootSection := .Site.GetPage (print &amp;#34;/&amp;#34; .Section &amp;#34;/_index.md&amp;#34;) -}}&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>string</title>
      <link>https://codebase.zone/techdoc/frontend/hugo/code-shreds/string/</link>
      <pubDate>Sun, 17 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/frontend/hugo/code-shreds/string/</guid>
      <description>&lt;h3 id=&#34;concatenating-strings&#34;&gt;concatenating strings&lt;/h3&gt;&#xA;&lt;p&gt;Strings can be concatenated with &lt;button class=&#34;emph emph-command&#34; disabled&gt;print&lt;/button&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;code language-go&#34;&gt;&#xA;{{ $fruits := (print $someOtherFruits &amp;#34; kiwi&amp;#34; &amp;#34; banana&amp;#34; ) }}&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>setting the system and hardware clock</title>
      <link>https://codebase.zone/techdoc/linux/setup/clock/</link>
      <pubDate>Wed, 13 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/clock/</guid>
      <description>&lt;p&gt;TLDR? Head straight to &lt;a href=&#34;#putting-it-all-together-to-configure-the-clocks&#34;&gt;putting it all together&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;time-formats-utc-and-local-time-time-zones&#34;&gt;time formats UTC and local time; time zones&lt;/h2&gt;&#xA;&lt;p&gt;The world&amp;rsquo;s primary time standard is &lt;em&gt;UTC&lt;/em&gt;, which is short for &lt;em&gt;Coordinated Universal Time&lt;/em&gt;.&#xA;UTC is defined as the time at the meridian with a longitude of 0°.&#xA;It is the successor of &lt;em&gt;GMT&lt;/em&gt;, Greenwich Median Time (Greenwich, UK, is located at the meridian with longitude 0°).&lt;/p&gt;</description>
    </item>
    <item>
      <title>how to prevent your home dir from getting littered</title>
      <link>https://codebase.zone/blog/2024/01/17-xdg/</link>
      <pubDate>Wed, 17 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/blog/2024/01/17-xdg/</guid>
      <description>&lt;p&gt;For most Linux distributions, even in a pristine bare minimum installation, the home directory&#xA;of a user is already littered with a bunch of &lt;button class=&#34;emph emph-file&#34; disabled&gt;.whatever&lt;/button&gt; files and directories,&#xA;that contain program configurations, colloquially called dot-files. This gets worse over time,&#xA;as more programs are installed and used.&lt;/p&gt;</description>
    </item>
    <item>
      <title>switch</title>
      <link>https://codebase.zone/techdoc/java-se/features/control-flow/switch/</link>
      <pubDate>Tue, 09 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/features/control-flow/switch/</guid>
      <description>&lt;h2 id=&#34;traditional-switch-statement&#34;&gt;traditional switch statement&lt;/h2&gt;&#xA;&lt;p&gt;The traditional &lt;span class=&#34;java&#34;&gt;switch&lt;/span&gt; statement has a test expression and a switch code block.&#xA;In a switch code block, only switch statements are allowed.&#xA;A switch statement starts with a &lt;button class=&#34;emph emph-code&#34; disabled&gt;case&lt;/button&gt; label and a value or a &lt;button class=&#34;emph emph-code&#34; disabled&gt;default&lt;/button&gt; label,&#xA;followed by a colon, followed by one or more statements;&lt;/p&gt;</description>
    </item>
    <item>
      <title>basic git concepts</title>
      <link>https://codebase.zone/techdoc/dev-tools/git/basic-concepts/</link>
      <pubDate>Sat, 28 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/dev-tools/git/basic-concepts/</guid>
      <description>&lt;h1 id=&#34;overview-of-a-git-repo&#34;&gt;overview of a git repo&lt;/h1&gt;&#xA;&lt;p&gt;The following picture shows the structure of a git repo and illustrates the flow of data between the repo&amp;rsquo;s components.&#xA;The arrows also illustrate the workflow when working with git, with each arrow labeled with the corresponding git command&#xA;(i.e. &lt;em&gt;add&lt;/em&gt; for the command &lt;em&gt;git add&lt;/em&gt;):&lt;/p&gt;</description>
    </item>
    <item>
      <title>editing EXIF data with ExifTool</title>
      <link>https://codebase.zone/blog/2023/10/15-exiftool/</link>
      <pubDate>Sun, 15 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/blog/2023/10/15-exiftool/</guid>
      <description>&lt;h2 id=&#34;so-what-is-exif&#34;&gt;so what is EXIF?&lt;/h2&gt;&#xA;&lt;p&gt;EXIF (Exchangeable Image File Format) is a standard format maintained by the &lt;em&gt;Japan Electronic and Information&#xA;Technology Industries Association&lt;/em&gt; (JEITA) for metadata in digital images. EXIF is used&#xA;to tag image files with metadata like image width and height, bits per pixel, camera settings&#xA;like shutter speed and a whole host of other image specific data like the GPS location where the image&#xA;was taken, and the date and time when the image was taken. EXIF is supported&#xA;by almost all modern digital cameras. It is also used to tag other types of files, i.e. sound&#xA;files, PDFs, OpenOffice/LibreOffice or Word docs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>migrating Java Server Faces 2.3 to Jakarta Faces 4.0</title>
      <link>https://codebase.zone/techdoc/jakarta-ee/technologies/jsf/migration/2-3-to-4-0/</link>
      <pubDate>Tue, 10 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/jakarta-ee/technologies/jsf/migration/2-3-to-4-0/</guid>
      <description>&lt;div class=&#34;colorbox theme&#34; role=&#34;colorbox&#34;&gt;&lt;strong&gt;Work in Progress&lt;/strong&gt; &amp;ndash; I&amp;rsquo;m still in the transition from Java Server Faces 2.3 to Jakarta Faces 4.0&#xA;and will add here whatever I will encounter.&lt;/div&gt;&#xA;&lt;p&gt;Jakarta Faces 3.0 didn&amp;rsquo;t bring any new features or changes, but was just a renaming of the&#xA;&lt;span class=&#34;java&#34;&gt;javax.faces&lt;/span&gt; namespace to the &lt;span class=&#34;java&#34;&gt;jakarta.faces&lt;/span&gt; namespace. So I&#xA;did the migration straight from Java Server Faces 2.3 to Jakarta Faces 4.0.&lt;/p&gt;</description>
    </item>
    <item>
      <title>migrating JPA 2.2 to 3.0</title>
      <link>https://codebase.zone/techdoc/jakarta-ee/technologies/jpa/migration/2-2-to-3-0/</link>
      <pubDate>Thu, 05 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/jakarta-ee/technologies/jpa/migration/2-2-to-3-0/</guid>
      <description>&lt;h2 id=&#34;changes&#34;&gt;changes&lt;/h2&gt;&#xA;&lt;p&gt;There are no new features in JPA 3.0. The changes in 3.0 just reflect the transition from&#xA;Java EE to Jakarta EE by renaming the prefix of the JPA API packages, renaming the prefix of config vars&#xA;in config files like &lt;em&gt;persistence.xml&lt;/em&gt; and introducing the new Jakarta specific namespace&#xA;for XML config files.&#xA;Additionally, avoiding the use of the name &lt;em&gt;Java&lt;/em&gt; avoids legal issues.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jakarta Faces performance tuning</title>
      <link>https://codebase.zone/techdoc/jakarta-ee/technologies/jsf/performance/</link>
      <pubDate>Wed, 29 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/jakarta-ee/technologies/jsf/performance/</guid>
      <description>&lt;h2 id=&#34;approaches-to-apply-right-from-the-start&#34;&gt;approaches to apply right from the start&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;prefer HTML over JSF tags.&lt;/li&gt;&#xA;&lt;li&gt;no logic in getters (can be called multiple times) &amp;ndash; especially for the rendered attribute.&lt;/li&gt;&#xA;&lt;li&gt;avoid logic in EL expressions.&lt;/li&gt;&#xA;&lt;li&gt;avoid using h:outputText. instead, use an EL expressions.&lt;/li&gt;&#xA;&lt;li&gt;if you need to escape HTML, it&amp;rsquo;s better to use an EL function.&lt;/li&gt;&#xA;&lt;li&gt;use AJAX where possible.&lt;/li&gt;&#xA;&lt;li&gt;only process and update components that are really required to be updated.&lt;/li&gt;&#xA;&lt;li&gt;use &lt;button class=&#34;emph emph-code&#34; disabled&gt;@RequestScoped&lt;/button&gt; where posssible. Avoid using &lt;button class=&#34;emph emph-code&#34; disabled&gt;@SessionScoped&lt;/button&gt;,&#xA;&lt;button class=&#34;emph emph-code&#34; disabled&gt;@ViewScoped&lt;/button&gt; and other long lived scopes.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;approaches-for-performance-tuning&#34;&gt;approaches for performance tuning&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;cache data, which is required multiple times in the same view, in @RequestScoped beans.&lt;/li&gt;&#xA;&lt;li&gt;split your backing beans. It&amp;rsquo;s better to have a separate bean for logic and a separate bean&#xA;for values which are required for multiple requests (&lt;button class=&#34;emph emph-code&#34; disabled&gt;@ViewScoped&lt;/button&gt;,&#xA;&lt;button class=&#34;emph emph-code&#34; disabled&gt;@ViewAccessScoped&lt;/button&gt;&amp;hellip;).&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>a few JDK vendors and available JDKs</title>
      <link>https://codebase.zone/techdoc/java-se/jdk/vendors/</link>
      <pubDate>Mon, 05 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/jdk/vendors/</guid>
      <description>Some information on available JDKs and their vendors</description>
    </item>
    <item>
      <title>Jakarta EE versions</title>
      <link>https://codebase.zone/techdoc/jakarta-ee/versions/</link>
      <pubDate>Mon, 05 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/jakarta-ee/versions/</guid>
      <description>Java EE and Jakarta EE versions</description>
    </item>
    <item>
      <title>Java EE versions</title>
      <link>https://codebase.zone/techdoc/java-ee/versions/</link>
      <pubDate>Mon, 05 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-ee/versions/</guid>
      <description>Java EE versions</description>
    </item>
    <item>
      <title>arrow brushes with GIMP</title>
      <link>https://codebase.zone/techdoc/doc-creation/images/arrows/</link>
      <pubDate>Thu, 14 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/doc-creation/images/arrows/</guid>
      <description>creating arrows for technical documentation with GIMP and draw.io</description>
    </item>
    <item>
      <title>user management</title>
      <link>https://codebase.zone/techdoc/jakarta-ee/app-server/wildfly/rbac/</link>
      <pubDate>Tue, 12 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/jakarta-ee/app-server/wildfly/rbac/</guid>
      <description>overview of the WildFly role based access control structure &lt;em&gt;RBAC&lt;/em&gt; and its configuration options</description>
    </item>
    <item>
      <title>WildFly standalone installation</title>
      <link>https://codebase.zone/techdoc/jakarta-ee/app-server/wildfly/install/</link>
      <pubDate>Tue, 12 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/jakarta-ee/app-server/wildfly/install/</guid>
      <description>WildFly standalone installation and basic configuration walkthrough</description>
    </item>
    <item>
      <title>the codebase site is up</title>
      <link>https://codebase.zone/blog/2022/06/27-site-is-up/</link>
      <pubDate>Mon, 27 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/blog/2022/06/27-site-is-up/</guid>
      <description>&lt;p&gt;What I wanted to do for a long time, but didn&amp;rsquo;t have the time to do (or I thought I didn&amp;rsquo;t&#xA;have the time):&#xA;I finally got this website up and running, with the blog you&amp;rsquo;re reading right now,&#xA;technical documentation and my portfolio.&lt;/p&gt;</description>
    </item>
    <item>
      <title>intro</title>
      <link>https://codebase.zone/techdoc/linux/shell/programming/intro/</link>
      <pubDate>Mon, 18 Apr 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/programming/intro/</guid>
      <description>&lt;p&gt;Shell programming can be used to write shell scripts that simplify tasks that can be done&#xA;on the command line. Shell scripts consist of a consecutive series of terminal commands and&#xA;shell built-in commands. This documentation refers to &lt;em&gt;bash&lt;/em&gt;, the &lt;em&gt;bourne again shell&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>output</title>
      <link>https://codebase.zone/techdoc/linux/shell/programming/output/</link>
      <pubDate>Mon, 18 Apr 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/programming/output/</guid>
      <description>For output, two commands can be used: &lt;em&gt;echo&lt;/em&gt; and &lt;em&gt;printf&lt;/em&gt;. Both commands are available as a shell built-in and/or</description>
    </item>
    <item>
      <title>terminal input</title>
      <link>https://codebase.zone/techdoc/linux/shell/programming/terminal-input/</link>
      <pubDate>Mon, 18 Apr 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/programming/terminal-input/</guid>
      <description>User input from the terminal can be processed with the command &lt;em&gt;read&lt;/em&gt; By default &lt;em&gt;read&lt;/em&gt; reads user input from</description>
    </item>
    <item>
      <title>variables</title>
      <link>https://codebase.zone/techdoc/linux/shell/programming/variables/</link>
      <pubDate>Mon, 18 Apr 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/programming/variables/</guid>
      <description>&lt;h2 id=&#34;variable-names&#34;&gt;variable names&lt;/h2&gt;&#xA;&lt;p&gt;Variable names are case sensitive. They have to start with a lower or an upper case letter&#xA;or an underscore.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hugo misc stuff</title>
      <link>https://codebase.zone/techdoc/frontend/hugo/basic/</link>
      <pubDate>Fri, 18 Mar 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/frontend/hugo/basic/</guid>
      <description>this is a kitchen sink for stuff that I throw in, before I forget it, and to redistribute it later to the appropriate pages</description>
    </item>
    <item>
      <title>context root</title>
      <link>https://codebase.zone/techdoc/jakarta-ee/app-server/payara-micro/config/context-root/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/jakarta-ee/app-server/payara-micro/config/context-root/</guid>
      <description>setting the context root in configuration files and on the shell when running Payara Micro</description>
    </item>
    <item>
      <title>intro</title>
      <link>https://codebase.zone/techdoc/java-se/jshell/intro/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/jshell/intro/</guid>
      <description>&lt;p&gt;The jshell is a great tool for exploring libraries, testing new features of Java and for&#xA;explorative programming in general. Java code entered at the shell prompt or provided by&#xA;script files is evaluated by the jshell in a Read-Eval-Print-Loop (REPL). No need to compile&#xA;your code and start a jvm with your code (this is what the jshell in effect does).&lt;/p&gt;</description>
    </item>
    <item>
      <title>jpa</title>
      <link>https://codebase.zone/techdoc/jakarta-ee/app-server/payara-micro/config/jpa/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/jakarta-ee/app-server/payara-micro/config/jpa/</guid>
      <description>setting up JPA with Payara Micro for access to a PostgreSQL Database</description>
    </item>
    <item>
      <title>Payara Micro JAR folder structure</title>
      <link>https://codebase.zone/techdoc/jakarta-ee/app-server/payara-micro/micro-jar/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/jakarta-ee/app-server/payara-micro/micro-jar/</guid>
      <description>overview of the Payara Micro jar structure and options for unpacking the jar when running Payara Micro</description>
    </item>
    <item>
      <title>tls</title>
      <link>https://codebase.zone/techdoc/jakarta-ee/app-server/payara-micro/config/tls/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/jakarta-ee/app-server/payara-micro/config/tls/</guid>
      <description>securing Payara Micro&amp;rsquo;s HTTP port with TLS (Transport Layer Security)</description>
    </item>
    <item>
      <title>CDI with JSF 2.3 on Open Liberty</title>
      <link>https://codebase.zone/techdoc/jakarta-ee/app-server/openliberty/config/cdi-jsf/</link>
      <pubDate>Fri, 21 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/jakarta-ee/app-server/openliberty/config/cdi-jsf/</guid>
      <description>@FacesConverter does not work with the JSF 2.3 feature of Openliberty with a default config</description>
    </item>
    <item>
      <title>configuring TLS on Openliberty</title>
      <link>https://codebase.zone/techdoc/jakarta-ee/app-server/openliberty/config/tls/</link>
      <pubDate>Fri, 21 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/jakarta-ee/app-server/openliberty/config/tls/</guid>
      <description>complete TLS setup for Openliberty with keystore creation and setup of Root CA</description>
    </item>
    <item>
      <title>Openliberty JPA setup</title>
      <link>https://codebase.zone/techdoc/jakarta-ee/app-server/openliberty/config/jpa/</link>
      <pubDate>Fri, 21 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/jakarta-ee/app-server/openliberty/config/jpa/</guid>
      <description>&lt;h2 id=&#34;required-features&#34;&gt;required features&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Java Database Connectivity&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;and one of the followoing features:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Java Persistence API, includes Eclipselink as provider, or&lt;/li&gt;&#xA;&lt;li&gt;Java Persistence API Container, for other providers like hibernate plus a JPA provider&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;configuration&#34;&gt;configuration&lt;/h2&gt;&#xA;&lt;h3 id=&#34;configuration-files--locations&#34;&gt;configuration files / locations&lt;/h3&gt;&#xA;&lt;div class=&#34;code language-plaintext&#34;&gt;&#xA;.&#xA;├── pom.xml&#xA;└── src&#xA;    └── main&#xA;        │   &#xA;        ├── liberty&#xA;        │   └── config&#xA;        │       └── server.xml&#xA;        ├── resources&#xA;        │   └── META-INF&#xA;        │       └── persistence.xml&#xA;       ...&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;serverxml&#34;&gt;server.xml&lt;/h3&gt;&#xA;&lt;p&gt;In the server.xml, the required features are enabled, the location of the database driver&#xA;is specified and the datasource is configured.&lt;/p&gt;</description>
    </item>
    <item>
      <title>keyboard configuration</title>
      <link>https://codebase.zone/techdoc/linux/setup/input/keyboard/</link>
      <pubDate>Thu, 20 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/input/keyboard/</guid>
      <description>configuring the keyboard with a layout alternating between a primary and a secondary language</description>
    </item>
    <item>
      <title>the debian way</title>
      <link>https://codebase.zone/techdoc/linux/setup/java/debian/</link>
      <pubDate>Thu, 20 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/java/debian/</guid>
      <description>installation of the JDK / JSDK &amp;ndash; the Debian way&lt;br&gt;</description>
    </item>
    <item>
      <title>setup fs</title>
      <link>https://codebase.zone/techdoc/linux/setup/fs/luks/setup/</link>
      <pubDate>Wed, 19 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/fs/luks/setup/</guid>
      <description>how to set up encrypted partitions with LUKS after installation of the OS</description>
    </item>
    <item>
      <title>running the HUGO server</title>
      <link>https://codebase.zone/techdoc/frontend/hugo/server/</link>
      <pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/frontend/hugo/server/</guid>
      <description>how to run the HUGO server in dev mode, for deployment, and within scripts</description>
    </item>
    <item>
      <title>configuration</title>
      <link>https://codebase.zone/techdoc/database/postgresql/config/</link>
      <pubDate>Tue, 11 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/database/postgresql/config/</guid>
      <description>some recommended basic configuration after the installation of PostgreSQL</description>
    </item>
    <item>
      <title>configuring HAM for Payara</title>
      <link>https://codebase.zone/techdoc/jakarta-ee/app-server/payara/security/ham/</link>
      <pubDate>Tue, 11 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/jakarta-ee/app-server/payara/security/ham/</guid>
      <description>configuration of the Java Security API&amp;rsquo;s HttpAuthenticationMechanism on Payara</description>
    </item>
    <item>
      <title>database and database objects</title>
      <link>https://codebase.zone/techdoc/database/postgresql/database/</link>
      <pubDate>Sat, 08 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/database/postgresql/database/</guid>
      <description>creating databases and database objects</description>
    </item>
    <item>
      <title>psql</title>
      <link>https://codebase.zone/techdoc/database/postgresql/psql/psql/</link>
      <pubDate>Sat, 08 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/database/postgresql/psql/psql/</guid>
      <description>some useful psql commands for daily work with PostgreSQL</description>
    </item>
    <item>
      <title>software architecture and development</title>
      <link>https://codebase.zone/about/software-architecture/</link>
      <pubDate>Thu, 06 Dec 2018 09:29:16 +1000</pubDate>
      <guid>https://codebase.zone/about/software-architecture/</guid>
      <description>&lt;p&gt;In most projects I&amp;rsquo;m working 20% as an architect and 80% as a developer,&#xA;building prototypes and POCs, implementing functionalities and reducing complexity.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enerchain B2B trading platform</title>
      <link>https://codebase.zone/work/enerchain/</link>
      <pubDate>Sun, 18 Nov 2018 12:33:46 +1000</pubDate>
      <guid>https://codebase.zone/work/enerchain/</guid>
      <description>In the Enerchain project, I supported the B2B service provider Ponton, Hamburg, in setting up a decentralized trading platform for energy suppliers. Enerchain enables energy suppliers to trade anonymously with complete end-to-end encryption. Some of Europe&amp;rsquo;s leading energy suppliers, such as Enel, Endesa, Eon, RWE, and Vattenfall, participated in the proof-of-concept (PoC) phase of Enerchain.</description>
    </item>
    <item>
      <title>GIS for supply chain management</title>
      <link>https://codebase.zone/work/gis/</link>
      <pubDate>Sun, 18 Nov 2018 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/work/gis/</guid>
      <description>I supported Navteq, a leading provider of geographic data for use in navigation devices, in the further development of a GIS (Geographic Information System). By partially restructuring the system, we achieved higher performance. In addition, several refactorings significantly improved the results of the VeraCode security audit.</description>
    </item>
    <item>
      <title>blog</title>
      <link>https://codebase.zone/home/blog/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/home/blog/</guid>
      <description>&lt;p&gt;I occassionally blog about software development, focusing on the topics Java and Linux.&lt;/p&gt;</description>
    </item>
    <item>
      <title>UEFI images</title>
      <link>https://codebase.zone/techdoc/linux/setup/kernel/uefi/uefi-images/</link>
      <pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/kernel/uefi/uefi-images/</guid>
      <description>&lt;p&gt;UEFI Images are a class of files that contain executable code, aka EFI applications. UEFI images can be loaded and&#xA;executed by an UEFI firmware.&#xA;The first set of bytes in the UEFI&#xA;Image file contains an image header that defines the encoding of the executable image.&lt;/p&gt;</description>
    </item>
    <item>
      <title>dhcpd setup</title>
      <link>https://codebase.zone/techdoc/linux/setup/network/dhcpd/</link>
      <pubDate>Tue, 18 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/network/dhcpd/</guid>
      <description>&lt;div class=&#34;note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;icon warning&#34;&gt;&lt;i class=&#34;fas fa-exclamation&#34;&gt;&lt;/i&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;note-content warning&#34;&gt;&lt;button class=&#34;emph emph-code&#34; disabled&gt;dhcpcd&lt;/button&gt; reached its EOL in the end of 2022 and is now superseded by &lt;button class=&#34;emph emph-code&#34; disabled&gt;kea&lt;/button&gt;.&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;One reason to use &lt;button class=&#34;emph emph-code&#34; disabled&gt;dhcpd&lt;/button&gt; any longer is when a migration is to &lt;button class=&#34;emph emph-code&#34; disabled&gt;kea&lt;/button&gt;&#xA;version 1.9.1 or later is not possible.&lt;/p&gt;</description>
    </item>
    <item>
      <title>dhcpcd setup</title>
      <link>https://codebase.zone/techdoc/linux/setup/network/dhcpcd/</link>
      <pubDate>Tue, 07 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/network/dhcpcd/</guid>
      <description>&lt;p&gt;&lt;button class=&#34;emph emph-command&#34; disabled&gt;dhcpcd&lt;/button&gt; (Dynamic Host Configuration Protocol Client Demon) is the demon responsible for querying a&#xA;DHCP server (i.e., ISC kea) and configure the machine for the network it is about to join from the &lt;em&gt;lease&lt;/em&gt; it receives&#xA;from the DHCP server. A DHCP lease contains configuration values, i.e.:&lt;/p&gt;</description>
    </item>
    <item>
      <title>git bash enhancements</title>
      <link>https://codebase.zone/techdoc/dev-tools/git/customize/</link>
      <pubDate>Wed, 22 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/dev-tools/git/customize/</guid>
      <description>how to customize git in bash for a more comfortable and efficient working experience</description>
    </item>
    <item>
      <title>git configuration</title>
      <link>https://codebase.zone/techdoc/dev-tools/git/config/</link>
      <pubDate>Wed, 22 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/dev-tools/git/config/</guid>
      <description>configuration of git after initial installation with settings for users, repos and system wide settings</description>
    </item>
    <item>
      <title>snippets</title>
      <link>https://codebase.zone/techdoc/java-se/jshell/snippets/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/jshell/snippets/</guid>
      <description>jshell accepts the following JLS syntax: Statements Expressions Variable, Method, Class and Interface</description>
    </item>
    <item>
      <title>ram disk</title>
      <link>https://codebase.zone/techdoc/linux/setup/fs/ramdisk/</link>
      <pubDate>Thu, 20 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/fs/ramdisk/</guid>
      <description>mounting a ramdisk at boot up and differences between tmpfs and ramfs</description>
    </item>
    <item>
      <title>debian fix</title>
      <link>https://codebase.zone/techdoc/linux/setup/fs/luks/debian-fix/</link>
      <pubDate>Wed, 19 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/fs/luks/debian-fix/</guid>
      <description>fix for stalled shutdown process on Debian systems with System-V Init</description>
    </item>
    <item>
      <title>options parsing</title>
      <link>https://codebase.zone/techdoc/linux/shell/programming/options-parsing/</link>
      <pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/programming/options-parsing/</guid>
      <description>&lt;p&gt;There are several methods for the parsing options / parameters supplied to the shell script .&lt;/p&gt;</description>
    </item>
    <item>
      <title>clean, elegant solutions</title>
      <link>https://codebase.zone/about/clean-code/</link>
      <pubDate>Thu, 06 Dec 2018 09:29:16 +1000</pubDate>
      <guid>https://codebase.zone/about/clean-code/</guid>
      <description>&lt;p&gt;Elegance is not a luxury but a prerequisite for stable and equally flexible systems.&#xA;Keep it simple stupid.&#xA;This applies to both architecture and code.&#xA;I always leave the campground cleaner than I found it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>payment services helpdesk app modernization</title>
      <link>https://codebase.zone/work/helpdesk-modernize/</link>
      <pubDate>Sun, 18 Nov 2018 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/work/helpdesk-modernize/</guid>
      <description>For Ingenico, one of Europe&amp;rsquo;s largest payment service providers, I developed a catalog of measures for modernizing a helpdesk application for first-level support. In doing so, I reviewed the frameworks used for the application in terms of their future viability, evaluated possible alternatives, and developed a decision matrix to assist the project management team in their decision-making.</description>
    </item>
    <item>
      <title>techdoc</title>
      <link>https://codebase.zone/home/techdoc/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/home/techdoc/</guid>
      <description>&lt;p&gt;From time to time I upload technical documentation that I wrote while working on projects and evaluations.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unified Kernel Images</title>
      <link>https://codebase.zone/techdoc/linux/setup/kernel/uefi/uki/</link>
      <pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/kernel/uefi/uki/</guid>
      <description>&lt;p&gt;A Unified Kernel Image (UKI) is a combination of an UEFI boot stub, a Linux kernel, and further (optional) resources&#xA;like an initrd, all combined into a single UEFI image. This file can either be directly invoked by the UEFI firmware bootloader&#xA;or by a bootloader like &lt;em&gt;rEFInd&lt;/em&gt; or an OS&amp;rsquo; bootloader.&lt;/p&gt;</description>
    </item>
    <item>
      <title>wireless setup</title>
      <link>https://codebase.zone/techdoc/linux/setup/network/wireless/</link>
      <pubDate>Tue, 18 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/network/wireless/</guid>
      <description>&lt;h1 id=&#34;preparations&#34;&gt;preparations&lt;/h1&gt;&#xA;&lt;h2 id=&#34;check-if-wlan0-is-powered-up&#34;&gt;check if wlan0 is powered up&lt;/h2&gt;&#xA;&lt;div class=&#39;code  language-bash&#39;&gt;&#xA;  iwlist wlan0 power&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;list-available-networks-with-iwlist&#34;&gt;list available networks with iwlist&lt;/h2&gt;&#xA;&lt;div class=&#39;code  language-bash&#39;&gt;&#xA;  iwlist wlan0 scanning&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;generate-config-block-for-ssid-with-wpa_passphrase&#34;&gt;generate config block for SSID with wpa_passphrase&lt;/h2&gt;&#xA;&lt;p&gt;wpa_passphrase computes a 256-bit PSK and generates a configuration block for the network&#xA;with the SSID (Service Set Identifier) or ESSID (Extended Service Set Identifier) provided as parameter.&#xA;For an access point with the SSID &lt;em&gt;base&lt;/em&gt;, the command line is:&lt;/p&gt;</description>
    </item>
    <item>
      <title>network setup with iproute2 and net-tools commands</title>
      <link>https://codebase.zone/techdoc/linux/setup/network/iproute2/</link>
      <pubDate>Wed, 12 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/network/iproute2/</guid>
      <description>&lt;p&gt;In Linux, the network setup of a machine is done with the iproute2 tools. The iproute tools supersede&#xA;the now obsolete net-tools, which include, among others, the well known &lt;button class=&#34;emph emph-command&#34; disabled&gt;ifconfig&lt;/button&gt;,&#xA;&lt;button class=&#34;emph emph-command&#34; disabled&gt;route&lt;/button&gt; and &lt;button class=&#34;emph emph-command&#34; disabled&gt;netstat&lt;/button&gt; commands.&lt;/p&gt;</description>
    </item>
    <item>
      <title>history</title>
      <link>https://codebase.zone/techdoc/java-se/jshell/history/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/jshell/history/</guid>
      <description>history jshell maintains a history that includes all previously entered commands and snippets</description>
    </item>
    <item>
      <title>diagnostics</title>
      <link>https://codebase.zone/techdoc/linux/setup/fs/luks/diagnostics/</link>
      <pubDate>Wed, 19 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/fs/luks/diagnostics/</guid>
      <description>how to run diagnostics of devices encrypted with LUKS&lt;br&gt;</description>
    </item>
    <item>
      <title>arrays</title>
      <link>https://codebase.zone/techdoc/linux/shell/programming/arrays/</link>
      <pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/programming/arrays/</guid>
      <description>welcome to the world of negative indices and other barnyard oddities.</description>
    </item>
    <item>
      <title>techstack</title>
      <link>https://codebase.zone/about/favourite-setup/</link>
      <pubDate>Thu, 06 Dec 2018 09:29:16 +1000</pubDate>
      <guid>https://codebase.zone/about/favourite-setup/</guid>
      <description>&lt;p&gt;I work on Linux and my favourite setup for development is Intellij, Git and the Atlassian tools for&#xA;collaboration: BitBucket, Bamoo, Jira, Confluence.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HMI software design and development</title>
      <link>https://codebase.zone/work/car-radio/</link>
      <pubDate>Sun, 18 Nov 2018 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/work/car-radio/</guid>
      <description>When Volkswagen developed its own car radio system, I joined the development team and was responsible for the AM/FM part of the car radio. An essential part of my development work was the integration of the RDS (Radio Data System). In cooperation with the on-site residents of the suppliers of the tuner hardware I developed the interfaces to control the tuner hardware.</description>
    </item>
    <item>
      <title>roles (users)</title>
      <link>https://codebase.zone/techdoc/database/postgresql/userrole/</link>
      <pubDate>Mon, 24 Apr 2017 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/database/postgresql/userrole/</guid>
      <description>creation and maintenance of users and roles, setting permissions for users and roles</description>
    </item>
    <item>
      <title>who I am</title>
      <link>https://codebase.zone/home/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/home/about/</guid>
      <description>&lt;p&gt;I am a software engineer from Hamburg, Germany, working with Java.&lt;br/&gt;&#xA;Sometimes I scrub metal in the engine room (Linux) to create the infrastructure for projects.&lt;/p&gt;</description>
    </item>
    <item>
      <title>setting the kernel log level</title>
      <link>https://codebase.zone/techdoc/linux/setup/kernel/loglevel/</link>
      <pubDate>Wed, 20 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/kernel/loglevel/</guid>
      <description>&lt;h2 id=&#34;kernel-log-levels&#34;&gt;kernel log levels&lt;/h2&gt;&#xA;&lt;p&gt;Messages sent by the kernel fall into 8 categories of log levels 0 to 7, with log level 0/KERN_EMERG having the highest&#xA;priority and log level 7/KERN_DEBUG having the lowest priority:&lt;/p&gt;</description>
    </item>
    <item>
      <title>variables</title>
      <link>https://codebase.zone/techdoc/java-se/jshell/variables/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/jshell/variables/</guid>
      <description>Variables can be explicitly declared. For expression that don’t have a named variable, an implicit variable</description>
    </item>
    <item>
      <title>blacklisting modules</title>
      <link>https://codebase.zone/techdoc/linux/setup/kernel/module-blacklist/</link>
      <pubDate>Wed, 19 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/kernel/module-blacklist/</guid>
      <description>two ways how to prevent kernel modules from being loaded at startup</description>
    </item>
    <item>
      <title>key management</title>
      <link>https://codebase.zone/techdoc/linux/setup/fs/luks/key-mngmnt/</link>
      <pubDate>Wed, 19 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/fs/luks/key-mngmnt/</guid>
      <description>management of keys for partitions encrypted with LUKS&lt;br&gt;</description>
    </item>
    <item>
      <title>removable media</title>
      <link>https://codebase.zone/techdoc/linux/setup/fs/removable/</link>
      <pubDate>Wed, 19 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/fs/removable/</guid>
      <description>alternate mounting of several devices under the same mount point</description>
    </item>
    <item>
      <title>udevil &amp; devmon</title>
      <link>https://codebase.zone/techdoc/linux/setup/fs/udevil/</link>
      <pubDate>Wed, 19 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/fs/udevil/</guid>
      <description>using udevil and devmon for automatic mounting of removable media</description>
    </item>
    <item>
      <title>2nd order reference</title>
      <link>https://codebase.zone/techdoc/linux/shell/programming/2nd-order-ref/</link>
      <pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/programming/2nd-order-ref/</guid>
      <description>A 2nd order reference is a reference that references the variable with the name which is the value</description>
    </item>
    <item>
      <title>gitignore files</title>
      <link>https://codebase.zone/techdoc/dev-tools/gitea/gitignore/</link>
      <pubDate>Fri, 29 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/dev-tools/gitea/gitignore/</guid>
      <description>&lt;p&gt;Can be added to repos that are created with Gitea. gitignore files go into &lt;button class=&#34;emph emph-file&#34; disabled&gt;&amp;lt;gitea-install-dir&amp;gt;/conf/gitignore&lt;/button&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>interface naming schemes</title>
      <link>https://codebase.zone/techdoc/linux/setup/network/iface-naming/</link>
      <pubDate>Thu, 21 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/network/iface-naming/</guid>
      <description>&lt;p&gt;there are several naming schemes in Linux:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;the &amp;ldquo;traditional&amp;rdquo; or &amp;ldquo;classic&amp;rdquo; naming scheme of the nineties with iface names eth0, eth1, wlan0, wlan1, etc.&#xA;Interfaces get their names assigned by the kernel on a first-come, first-serve policy as they are probed by the network&#xA;interface drivers. With nowadays complex hardware, this way of naming is no longer predictable if more than one interface of&#xA;a kind (ethernet, wlan, &amp;hellip;) exists in the machine.&lt;/li&gt;&#xA;&lt;li&gt;some custom schemes working towards alleviating the problem mentioned above. Programs like &lt;button class=&#34;emph emph-command&#34; disabled&gt;nameif&lt;/button&gt;&#xA;and &lt;button class=&#34;emph emph-code&#34; disabled&gt;ifrename&lt;/button&gt; (which uses udev) used config files like &lt;button class=&#34;emph emph-file&#34; disabled&gt;/etc/iftab&lt;/button&gt; and&#xA;assigned interface names based on the MAC address &amp;ndash; which comes with another set of problems. These custom schemes&#xA;seem to be no longer in use.&lt;/li&gt;&#xA;&lt;li&gt;the predictable network interface devices names introduced in udev. Note that udev is developed as a part of&#xA;systemd but can be used completely without systemd (at least at the time of writing).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The authoritative documentation on the persistent naming on freedesktop.org is marked as obsolete and refers to the&#xA; &lt;a href=&#39;https://www.freedesktop.org/software/systemd/man/latest/systemd.net-naming-scheme.html&#39;&gt;systemd.net-naming-scheme man page&lt;/a&gt; &lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;.&#xA;Unfortunately, I can&amp;rsquo;t wrap my head around that man page completely.&lt;/p&gt;</description>
    </item>
    <item>
      <title>XDG Base Directory Specification</title>
      <link>https://codebase.zone/techdoc/linux/setup/xdg-base-dirs/</link>
      <pubDate>Wed, 29 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/xdg-base-dirs/</guid>
      <description>&lt;p&gt;XDG stands for &lt;em&gt;X Desktop Group&lt;/em&gt;, a project to work on interoperability for free-software desktop&#xA;environments for the X Window System (X11) and Wayland on Linux and other Unix-like operating systems.&#xA;It eventually evolved into freedesktop.org.&#xA;freedesktop.org produces specifications for interoperability, but it is not a formal standards body.&#xA;Projects are not required to implement the specifications and there is no certification.&lt;/p&gt;</description>
    </item>
    <item>
      <title>reverting changes in git</title>
      <link>https://codebase.zone/techdoc/dev-tools/git/reverting/</link>
      <pubDate>Wed, 22 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/dev-tools/git/reverting/</guid>
      <description>how to revert staged and unstaged changes while working with git</description>
    </item>
    <item>
      <title>viewing git commit history</title>
      <link>https://codebase.zone/techdoc/dev-tools/git/view-history/</link>
      <pubDate>Wed, 22 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/dev-tools/git/view-history/</guid>
      <description>viewing the commit history with &lt;em&gt;git log&lt;/em&gt; with custom formats for more information on less terminal real estate</description>
    </item>
    <item>
      <title>imports</title>
      <link>https://codebase.zone/techdoc/java-se/jshell/imports/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/jshell/imports/</guid>
      <description>On startup, jshell imports a bunch of Java packages by default. Imported packages can be listed with</description>
    </item>
    <item>
      <title>compile, install, remove</title>
      <link>https://codebase.zone/techdoc/linux/setup/kernel/compile/</link>
      <pubDate>Wed, 19 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/kernel/compile/</guid>
      <description>how to compile and install a new kernel and how to remove unused kernels</description>
    </item>
    <item>
      <title>checking command type</title>
      <link>https://codebase.zone/techdoc/linux/shell/checking-command-type/</link>
      <pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/checking-command-type/</guid>
      <description>&lt;h2 id=&#34;types-of-shell-commands&#34;&gt;types of shell commands&lt;/h2&gt;&#xA;&lt;p&gt;There are four types of shell commands:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;shell builtin&lt;/strong&gt; &amp;ndash; commands, that are built into the shell. &lt;button class=&#34;emph emph-command&#34; disabled&gt;test&lt;/button&gt;&#xA;and &lt;button class=&#34;emph emph-command&#34; disabled&gt;printf&lt;/button&gt; are more often than not shell builtins. Note, that&#xA;a command can be available as a shell builtin and as an executable or shell script (see next type).&#xA;An example on my system is the command &lt;button class=&#34;emph emph-command&#34; disabled&gt;test&lt;/button&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;compiled executable / shell script&lt;/strong&gt; &amp;ndash; compiled and installed programs. I.e.,&#xA;programs in &lt;button class=&#34;emph emph-file&#34; disabled&gt;/usr/bin&lt;/button&gt; and compiled programs installed in&#xA;&lt;button class=&#34;emph emph-file&#34; disabled&gt;/usr/local/bin&lt;/button&gt; or somewhere in&lt;button class=&#34;emph emph-file&#34; disabled&gt;/opt&lt;/button&gt;.&lt;br&gt;&#xA;Scripts, that are executed in a shell or an interpreter like Perl,&#xA;which is available in most Linux systems in &lt;button class=&#34;emph emph-code&#34; disabled&gt;/usr/bin/perl&lt;/button&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;shell alias&lt;/strong&gt; &amp;ndash; aliases for commands that are defined in &lt;button class=&#34;emph emph-file&#34; disabled&gt;.bashrc&lt;/button&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;shell function&lt;/strong&gt; &amp;ndash; shell functions that are sourced (read) in &lt;button class=&#34;emph emph-file&#34; disabled&gt;.bashrc&lt;/button&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;checking-command-type-with-type&#34;&gt;checking command type with &lt;em&gt;type&lt;/em&gt;&lt;/h2&gt;&#xA;&lt;p&gt;To check the type of a command, run &lt;button class=&#34;emph emph-command&#34; disabled&gt;type &amp;lt;command&amp;gt;&lt;/button&gt;, i.e. &lt;button class=&#34;emph emph-command&#34; disabled&gt;type printf&lt;/button&gt;.&#xA;The following section lists the output of &lt;button class=&#34;emph emph-command&#34; disabled&gt;type&lt;/button&gt; for the four types of shell&#xA;commands listed above.&lt;/p&gt;</description>
    </item>
    <item>
      <title>functions</title>
      <link>https://codebase.zone/techdoc/linux/shell/programming/function/</link>
      <pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/programming/function/</guid>
      <description>how to work with functions &amp;ndash; or what is sold to you as functions in shell programming</description>
    </item>
    <item>
      <title>schemas</title>
      <link>https://codebase.zone/techdoc/database/postgresql/schema/</link>
      <pubDate>Sat, 08 Jan 2022 00:38:48 +0900</pubDate>
      <guid>https://codebase.zone/techdoc/database/postgresql/schema/</guid>
      <description>making databases more manageable and more comprehensible with schemas</description>
    </item>
    <item>
      <title>Linux on UEFI platforms</title>
      <link>https://codebase.zone/techdoc/linux/setup/kernel/uefi/linux-on-uefi/</link>
      <pubDate>Sun, 23 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/kernel/uefi/linux-on-uefi/</guid>
      <description>Various information on working with UEFI in Linux, i.e., access to UEFI firmware variables, security considerations for accessing UEFI firmware variables, UEFI features in Linux, etc..</description>
    </item>
    <item>
      <title>methods, classes and interfaces</title>
      <link>https://codebase.zone/techdoc/java-se/jshell/methods/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/jshell/methods/</guid>
      <description>Inside methods, classes and interfaces, statements have to end with a semicolon</description>
    </item>
    <item>
      <title>conditionals</title>
      <link>https://codebase.zone/techdoc/linux/shell/programming/test-expressions/</link>
      <pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/programming/test-expressions/</guid>
      <description>general form of test expressions, i.e. for loops and if statements</description>
    </item>
    <item>
      <title>internet portal of the PES</title>
      <link>https://codebase.zone/work/pes/</link>
      <pubDate>Sun, 18 Nov 2018 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/work/pes/</guid>
      <description>I supported the team at Silpion, Hamburg, in developing the internet portal for the PES (Party of European Socialists). Based on an open source CMS in Java, we developed both the public area and the internal area for PES employees to create content and plan and execute events.</description>
    </item>
    <item>
      <title>Linux userspace tools for UEFI firmware</title>
      <link>https://codebase.zone/techdoc/linux/setup/kernel/uefi/userspace-tools/</link>
      <pubDate>Sun, 23 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/kernel/uefi/userspace-tools/</guid>
      <description>Information on some Linux userspace tools for working with UEFI firmware, i.e. how to register a Linux kernel with the UEFI firmware boot manager, reading and manipulating UEFI firmware variables, building an UKI, etc..</description>
    </item>
    <item>
      <title>git branch operations</title>
      <link>https://codebase.zone/techdoc/dev-tools/git/branch-operations/</link>
      <pubDate>Wed, 22 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/dev-tools/git/branch-operations/</guid>
      <description>&lt;h2 id=&#34;basic-operations&#34;&gt;basic operations&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;create a branch &amp;ndash; &lt;button class=&#34;emph emph-command&#34; disabled&gt;git branch &amp;lt;new branch&amp;gt;&lt;/button&gt;&lt;/li&gt;&#xA;&lt;li&gt;checkout a branch &amp;ndash; &lt;button class=&#34;emph emph-command&#34; disabled&gt;git checkout &amp;lt;branch&amp;gt;&lt;/button&gt;&lt;/li&gt;&#xA;&lt;li&gt;list local branches &amp;ndash; &lt;button class=&#34;emph emph-command&#34; disabled&gt;git branch&lt;/button&gt;&lt;/li&gt;&#xA;&lt;li&gt;list remote branches &amp;ndash; &lt;button class=&#34;emph emph-command&#34; disabled&gt;git git branch -r&lt;/button&gt;&lt;/li&gt;&#xA;&lt;li&gt;list local and remote branches &amp;ndash; &lt;button class=&#34;emph emph-command&#34; disabled&gt;git branch -a&lt;/button&gt;&lt;/li&gt;&#xA;&lt;li&gt;delete a local branch &amp;ndash; &lt;button class=&#34;emph emph-command&#34; disabled&gt;git branch -d &amp;lt;branch&amp;gt;&lt;/button&gt;&lt;/li&gt;&#xA;&lt;li&gt;delete a remote branch &amp;ndash; &lt;button class=&#34;emph emph-command&#34; disabled&gt;git push origin -d &amp;lt;branch&amp;gt;&lt;/button&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;create-and-checkout-a-branch-in-one-go&#34;&gt;create and checkout a branch in one go&lt;/h2&gt;&#xA;&lt;div class=&#34;code&#34;&gt;&#xA;git checkout -b &amp;lt;new branch&amp;gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;connecting-local-branches-to-upstream&#34;&gt;connecting local branches to upstream&lt;/h2&gt;&#xA;&lt;div class=&#34;code&#34;&gt;&#xA;git push -u origin new-branch&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;button class=&#34;emph emph-code&#34; disabled&gt;-u&lt;/button&gt; is shorthand for &lt;button class=&#34;emph emph-code&#34; disabled&gt;--set-upstream&lt;/button&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>working with the classpath</title>
      <link>https://codebase.zone/techdoc/java-se/jshell/classpath/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/jshell/classpath/</guid>
      <description>In order to be able to access classes in libs or class files that are not part of the JDK, the classpath must be set</description>
    </item>
    <item>
      <title>loops</title>
      <link>https://codebase.zone/techdoc/linux/shell/programming/loops/</link>
      <pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/programming/loops/</guid>
      <description>In Bash shell programming you can use the usual suspects for loop structures: the &lt;em&gt;for&lt;/em&gt; loop, which is usually used to</description>
    </item>
    <item>
      <title>script files</title>
      <link>https://codebase.zone/techdoc/database/postgresql/scriptfile/</link>
      <pubDate>Sat, 08 Jan 2022 00:38:48 +0900</pubDate>
      <guid>https://codebase.zone/techdoc/database/postgresql/scriptfile/</guid>
      <description>using script files for automatic creation and preseeding of databases</description>
    </item>
    <item>
      <title>views</title>
      <link>https://codebase.zone/techdoc/database/postgresql/view/</link>
      <pubDate>Mon, 24 Apr 2017 18:36:24 +0200</pubDate>
      <guid>https://codebase.zone/techdoc/database/postgresql/view/</guid>
      <description>just a quick example of how to generate a view from three tables</description>
    </item>
    <item>
      <title>building an Unified Kernel Image with dracut</title>
      <link>https://codebase.zone/techdoc/linux/setup/kernel/uefi/uki-dracut/</link>
      <pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/kernel/uefi/uki-dracut/</guid>
      <description>The dracut man page describes dracut as a &amp;rsquo;low-level tool for generating an initramfs/initrd image&amp;rsquo;, but with &amp;lsquo;uefi=yes&amp;rsquo; in dracut&amp;rsquo;s config, dracut builds an UEFI image that is executable by an UEFI firmware. This is perfect for building an Unified Kernel Image.</description>
    </item>
    <item>
      <title>Java 8</title>
      <link>https://codebase.zone/techdoc/java-se/version/java-08/</link>
      <pubDate>Thu, 13 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/version/java-08/</guid>
      <description>&lt;p&gt;general availability on 2014-03-18&lt;/p&gt;&#xA;&lt;p&gt;The original schedule aimed to ship the release in early September 2013, but due to an increased&#xA;focus on browser-related security issues that date was not achievable.&lt;/p&gt;</description>
    </item>
    <item>
      <title>modules</title>
      <link>https://codebase.zone/techdoc/java-se/jshell/modules/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/jshell/modules/</guid>
      <description>In order to be able to access modules that are not part of the JDK, the module path must be set according to the</description>
    </item>
    <item>
      <title>Java 9</title>
      <link>https://codebase.zone/techdoc/java-se/version/java-09/</link>
      <pubDate>Fri, 07 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/version/java-09/</guid>
      <description>&lt;p&gt;general availability on 2017-09-22&lt;/p&gt;&#xA;&lt;h1 id=&#34;jeps&#34;&gt;JEPs&lt;/h1&gt;&#xA;&lt;p&gt;Java 9 comes with a vast list of features. There are 91 JEPs listed in the features and schedule&#xA;page for JDK 9 (see also  &lt;a href=&#39;https://openjdk.org/projects/jdk9/&#39;&gt;JDK 9&lt;/a&gt; &lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;) .&lt;/p&gt;</description>
    </item>
    <item>
      <title>exception handling</title>
      <link>https://codebase.zone/techdoc/java-se/jshell/exception/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/jshell/exception/</guid>
      <description>If a snippet throws an exception, jshell prints the exception together with the snippet id that caused the exception</description>
    </item>
    <item>
      <title>tab completion</title>
      <link>https://codebase.zone/techdoc/java-se/jshell/tab-completion/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/jshell/tab-completion/</guid>
      <description>Tab completion works for commands, command parameters, variables, methods, classes and interfaces</description>
    </item>
    <item>
      <title>trapping signals</title>
      <link>https://codebase.zone/techdoc/linux/shell/programming/trap/</link>
      <pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/programming/trap/</guid>
      <description>how to trap signals that are sent to your shell script and how to handle them properly</description>
    </item>
    <item>
      <title>UEFI glossary</title>
      <link>https://codebase.zone/techdoc/linux/setup/kernel/uefi/glossary/</link>
      <pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/kernel/uefi/glossary/</guid>
      <description>Terms used in the domain of UEFI and related domains, and their abbreviation</description>
    </item>
    <item>
      <title>custom label files</title>
      <link>https://codebase.zone/techdoc/dev-tools/gitea/label-files/</link>
      <pubDate>Fri, 29 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/dev-tools/gitea/label-files/</guid>
      <description>&lt;p&gt;Label files with labels to categorize issues/tickets go into &lt;button class=&#34;emph emph-file&#34; disabled&gt;&amp;lt;gitea-install-dir&amp;gt;/conf/options&lt;/button&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Gitea 1.19 introduced a pretty cool new label format. There is an example of a label file on the gitea GitHub page&#xA; &lt;a href=&#39;https://github.com/go-gitea/gitea/blob/release/v1.24/options/label/Advanced.yaml&#39;&gt;Advanced.yaml&lt;/a&gt; &lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;.&#xA;At the time of writing the YAML example misses the three mandatory dashes &amp;lsquo;&amp;mdash;&amp;rsquo;, that indicate the start of a new YAML document.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java 10</title>
      <link>https://codebase.zone/techdoc/java-se/version/java-10/</link>
      <pubDate>Sat, 16 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/version/java-10/</guid>
      <description>&lt;p&gt;general availability on 2018-03-20&lt;/p&gt;&#xA;&lt;h1 id=&#34;jeps&#34;&gt;JEPs&lt;/h1&gt;&#xA;&lt;h2 id=&#34;new-features&#34;&gt;new features&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;state&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/286&#39;&gt;JEP 286: Local-Variable Type Inference&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;enhance the Java Language to extend type inference to declarations of local variables with initializers.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/314&#39;&gt;JEP 314: Additional Unicode Language-Tag Extensions&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;enhance java.util.Locale and related APIs to implement additional Unicode extensions of BCP 47 language tags.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/316&#39;&gt;JEP 316: Heap Allocation on Alternative Memory Devices&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Enable the HotSpot VM to allocate the Java object heap on an alternative memory device, such as an NV-DIMM, specified by the user.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/317&#39;&gt;JEP 317: Experimental Java-Based JIT Compiler&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;can be enabled with &lt;nobr&gt;-XX:+UnlockExperimentalVMOptions&lt;/nobr&gt; &lt;nobr&gt;-XX:+UseJVMCICompiler&lt;/nobr&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/319&#39;&gt;JEP 319: Root Certificates&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;the cacerts keystore in a fresh installation of the JDK was previously empty. It now contains certs from various Root CAs such as DigiCert, Let&amp;rsquo;s encrypt and Trustwave.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/322&#39;&gt;JEP 322: Time-Based Release Versioning&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;revise the version-string scheme of the Java SE Platform and the JDK, and related versioning information, for present and future time-based release models.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;jdk-internal&#34;&gt;JDK internal&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/296&#39;&gt;JEP 296: Consolidate the JDK Forest into a Single Repository&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;the numerous repositories of the JDK forest are combined into a single repository.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/304&#39;&gt;JEP 304: Garbage Collector Interface&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;improve the source code isolation of different garbage collectors by introducing a clean garbage collector (GC) interface. This is &lt;strong&gt;not&lt;/strong&gt; meant to add or remove a GC.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/307&#39;&gt;JEP 307: Parallel Full GC for G1&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;improve G1 worst-case latencies by making the full GC parallel. G1 is the default GC since Java 9&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/310&#39;&gt;JEP 310: Application Class-Data Sharing&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;to improve startup and footprint, extend the existing Class-Data Sharing (&amp;ldquo;CDS&amp;rdquo;) feature to allow application classes to be placed in the shared archive.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/312&#39;&gt;JEP 312: Thread-Local Handshakes&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;will help the VM achieve lower latency by reducing the number of global safepoints.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;deprecated&#34;&gt;deprecated&lt;/h2&gt;&#xA;&lt;p&gt;none&lt;/p&gt;</description>
    </item>
    <item>
      <title>feedback modes</title>
      <link>https://codebase.zone/techdoc/java-se/jshell/feedack-modes/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/jshell/feedack-modes/</guid>
      <description>&lt;h2 id=&#34;available-feedback-modes&#34;&gt;available feedback modes&lt;/h2&gt;&#xA;&lt;p&gt;JShell comes with four built-in feedback modes, listed in the table below&lt;/p&gt;</description>
    </item>
    <item>
      <title>screen and cursor control</title>
      <link>https://codebase.zone/techdoc/linux/shell/programming/tput/</link>
      <pubDate>Wed, 19 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/programming/tput/</guid>
      <description>controlling cursor position, text attributes and screen display with &lt;em&gt;tput&lt;/em&gt;</description>
    </item>
    <item>
      <title>Java 11</title>
      <link>https://codebase.zone/techdoc/java-se/version/java-11/</link>
      <pubDate>Sat, 16 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/version/java-11/</guid>
      <description>&lt;p&gt;general availability on 2018-09-25&lt;/p&gt;&#xA;&lt;h1 id=&#34;jeps&#34;&gt;JEPs&lt;/h1&gt;&#xA;&lt;h2 id=&#34;new-features&#34;&gt;new features&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;state&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/181&#39;&gt;JEP 181: Nest-Based Access Control&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;introduce nests, an access-control context that aligns with the existing notion of nested types in the Java programming language. Nests allow classes that are logically part of the same code entity, but which are compiled to distinct class files, to access each other&amp;rsquo;s private members without the need for compilers to insert accessibility-broadening bridge methods.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/309&#39;&gt;JEP 309: Dynamic Class-File Constants&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;extend the Java class-file format to support a new constant-pool form, CONSTANT_Dynamic.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/318&#39;&gt;JEP 318: Epsilon&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;experimental&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;a GC that handles memory allocation but does not implement any actual memory reclamation mechanism. Once the available Java heap is exhausted, the JVM will shut down.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/321&#39;&gt;JEP 321: HTTP Client&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standardize the incubated HTTP Client API introduced in JDK 9, via JEP 110, and updated in JDK 10.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/323&#39;&gt;JEP 323: Local-Variable Syntax for Lambda Parameters&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;I prefer the  implicitly typed lambda expressions as in Java SE 8 :)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/324&#39;&gt;JEP 324: Key Agreement with Curve25519 and Curve448&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;more efficient and secure than the elliptic curve Diffie-Hellman (ECDH) scheme&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/327&#39;&gt;JEP 327: Unicode 10&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Java SE 10 implements Unicode 8.0&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/328&#39;&gt;JEP 328: Flight Recorder&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;records events originating from applications, the JVM and the OS with an performance overhead of under 1%. intended for monitoring, profiling and troubleshooting of apps in production&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/329&#39;&gt;JEP 329: ChaCha20 and Poly1305 Cryptographic&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;ChaCha20 is a relatively new stream cipher that can replace the older, insecure RC4 stream cipher.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/330&#39;&gt;JEP 330: Launch Single-File Source-Code Programs&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;you can now launch single file Java apps with a shebang&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/331&#39;&gt;JEP 331: Low-Overhead Heap Profiling&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;low-overhead way of sampling Java heap allocations, accessible via JVMTI.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/332&#39;&gt;JEP 332: Transport Layer Security (TLS) 1.3&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;implement version 1.3 of the Transport Layer Security (TLS) Protocol RFC 8446.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/333&#39;&gt;JEP 333: ZGC, A Scalable Low-Latency Garbage Collector &#xA;(Experimental)&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;experimental&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;the Z Garbage Collector, also known as ZGC, is a scalable low-latency garbage collector.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;jdk-internal&#34;&gt;JDK internal&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/315&#39;&gt;JEP 315: Improve Aarch64 Intrinsics&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;specialized CPU architecture-specific code patterns improve the performance of user applications and benchmarks.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;deprecated&#34;&gt;deprecated&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/335&#39;&gt;JEP 335: Deprecate the Nashorn JavaScript Engine&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;the nashorn engine is a complete implementation of the ECMAScript-262 5.1 standard. With the rapid pace at which ECMAScript language evolves, there&amp;rsquo;s not enough dev power to maintain Nashorn. Might get resurrected if there are enough devs to maintain a complete implementation of the ECMAScript standard.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/336&#39;&gt;JEP 336: Deprecate the Pack200 Tools and API&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Pack200 is a compression scheme for JAR files, introduced in Java SE 5.0. Its file format is tightly coupled to the class file format and the JAR file format. Pack200 has been used especially to compress the JDK up to version 8 and applets. Applets are gone and Java 9 and later versions do not rely on Pack200.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;removed&#34;&gt;removed&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/320&#39;&gt;JEP 320: Remove the Java EE and CORBA Modules&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;From the JEP: &amp;ldquo;There is no significant interest in developing modern applications with CORBA in Java.&amp;rdquo;. Yep, CORBA sucked from the time of its inception.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;some-feature-details&#34;&gt;some feature details&lt;/h1&gt;&#xA;&lt;h2 id=&#34;jep-318-epsilon-a-no-op-garbage-collector-experimental&#34;&gt;JEP 318: Epsilon: A No-Op Garbage Collector (Experimental)&lt;/h2&gt;&#xA;&lt;p&gt;A no-op GC is useful in the following scenarios:&lt;/p&gt;</description>
    </item>
    <item>
      <title>script files</title>
      <link>https://codebase.zone/techdoc/java-se/jshell/scriptfiles/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/jshell/scriptfiles/</guid>
      <description>A jshell script file is a sequence of jshell commands and/or snippets, one command or snippet per line</description>
    </item>
    <item>
      <title>reading files</title>
      <link>https://codebase.zone/techdoc/linux/shell/programming/fileread/</link>
      <pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/programming/fileread/</guid>
      <description>working with file descriptors and reading files in a shell script with the &lt;em&gt;read&lt;/em&gt; command</description>
    </item>
    <item>
      <title>archiving git repos</title>
      <link>https://codebase.zone/techdoc/dev-tools/git/bundle/</link>
      <pubDate>Wed, 25 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/dev-tools/git/bundle/</guid>
      <description>&lt;p&gt;There are three ways for creating an archive from a git repo:&#xA;&lt;button class=&#34;emph emph-command&#34; disabled&gt;git archive&lt;/button&gt;,&#xA;&lt;button class=&#34;emph emph-command&#34; disabled&gt;git bundle&lt;/button&gt;,&#xA;and plain tarballs. Spoiler: as long as you want to archive the local repo in its current state&#xA;&amp;ndash;that is with uncommitted changes&amp;ndash;&#xA;making a tarball from a git repo is not only the most simple&#xA;way to create an archive from a git repo, but also the best one.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java 12</title>
      <link>https://codebase.zone/techdoc/java-se/version/java-12/</link>
      <pubDate>Sat, 16 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/version/java-12/</guid>
      <description>&lt;p&gt;general availability on 2019-03-19&lt;/p&gt;&#xA;&lt;h1 id=&#34;jeps&#34;&gt;JEPs&lt;/h1&gt;&#xA;&lt;h2 id=&#34;new-features&#34;&gt;new features&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;state&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/189&#39;&gt;JEP 189: Shenandoah, A Low-Pause-Time Garbage Collector &#xA;(Experimental)&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;experimental&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;a GC which reduces GC pause times by doing evacuation work concurrently with the running Java threads. Pause times are independent of heap size, the goal is  to never interrupt the running program for more than a handful of milliseconds.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/325&#39;&gt;JEP 325: Switch Expressions &#xA;(Preview)&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;preview&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;extended switch statement that can be used as either a statement or an expression. Both forms can use either a &amp;ldquo;traditional&amp;rdquo; or &amp;ldquo;simplified&amp;rdquo; scoping and control flow behavior.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/334&#39;&gt;JEP 334: JVM Constants API&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;an API to model nominal descriptions of key class-file and run-time artifacts, in particular constants that are loadable from the constant pool.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/344&#39;&gt;JEP 344: Abortable Mixed Collections for G1&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;make all pauses in G1 abortable.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/346&#39;&gt;JEP 346: Promptly Return Unused Committed Memory from G1&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;make G1 detect phases of Java heap under-utilization (&amp;ldquo;idle&amp;rdquo; phases), and automatically reduce the JVMs heap usage during that time. Tests with a prototype were quite impressive (see blow).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;jdk-internal&#34;&gt;JDK internal&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/230&#39;&gt;JEP 230: Microbenchmark Suite&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;a basic suite of microbenchmarks in the JDK source code. Makes it easy for developers  to run existing microbenchmarks and create new ones.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/340&#39;&gt;JEP 340: One AArch64 Port, Not Two&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;remove all of the sources related to the arm64 port while retaining the 32-bit ARM port and the 64-bit aarch64 port.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/341&#39;&gt;JEP 341: Default CDS Archives&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;enhance the JDK build process to generate a class data-sharing (CDS) archive, using the default class list, on 64-bit platforms.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;deprecated&#34;&gt;deprecated&lt;/h2&gt;&#xA;&lt;p&gt;none&lt;/p&gt;</description>
    </item>
    <item>
      <title>configuration</title>
      <link>https://codebase.zone/techdoc/java-se/jshell/configuration/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/jshell/configuration/</guid>
      <description>&lt;h2 id=&#34;the-jshell-configuration-file&#34;&gt;the jshell configuration file&lt;/h2&gt;&#xA;&lt;p&gt;On Linux systems, the startup configuration is written to the file&#xA;&lt;button class=&#34;emph emph-file&#34; disabled&gt;~/.java/.userPrefs/tool/JShell/prefs.xml&lt;/button&gt;.&lt;br&gt;&#xA;Windows and Mac OS users will find the &lt;button class=&#34;emph emph-file&#34; disabled&gt;prefs.xml&lt;/button&gt;&#xA;file in the corresponding directory inside their home directory / user directory.&lt;/p&gt;</description>
    </item>
    <item>
      <title>locking</title>
      <link>https://codebase.zone/techdoc/linux/shell/programming/locking/</link>
      <pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/programming/locking/</guid>
      <description>locking with homegrown solutions and the command &lt;em&gt;dotlockfile&lt;/em&gt;</description>
    </item>
    <item>
      <title>java 13</title>
      <link>https://codebase.zone/techdoc/java-se/version/java-13/</link>
      <pubDate>Sat, 16 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/version/java-13/</guid>
      <description>&lt;p&gt;general availability on 2019-09-17&lt;/p&gt;&#xA;&lt;h1 id=&#34;jeps&#34;&gt;jeps&lt;/h1&gt;&#xA;&lt;h2 id=&#34;new-features&#34;&gt;new features&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;jep&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;state&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/351&#39;&gt;jep 351: zgc, uncommit unused memory &#xA;(Experimental)&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;experimental&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;zgc does not currently uncommit and return memory to the operating system, even when that memory has been unused for a long time. enhance zgc to return unused heap memory to the operating system.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/354&#39;&gt;jep 354: switch expressions &#xA;(Second Preview)&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;second preview&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;extended switch statement that can be used as either a statement or an expression. both forms can use either a &amp;ldquo;traditional&amp;rdquo; or &amp;ldquo;simplified&amp;rdquo; scoping and control flow behavior. see &lt;a href=&#34;../java-12/#jep-325-switch-expressions-preview&#34;&gt;comments on &amp;lsquo;JEP 325: Switch Expressions (Preview)&amp;rsquo;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/355&#39;&gt;jep 355: text blocks &#xA;(Preview)&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;preview&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;add text blocks to the java language. a text block is a multi-line string literal that avoids the need for most escape sequences, automatically formats the string in a predictable way, and gives the developer control over format when desired.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;jdk-internal&#34;&gt;jdk internal&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;jep&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/350&#39;&gt;jep 350: dynamic cds archives&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;extend application class-data sharing to allow the dynamic archiving of classes at the end of java application execution. the archived classes will include all loaded application classes and library classes that are not present in the default, base-layer cds archive.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/353&#39;&gt;jep 353: reimplement the legacy socket api&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;replace the underlying implementation used by the java.net.socket and java.net.serversocket apis with a simpler and more modern implementation that is easy to maintain and debug.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;deprecated&#34;&gt;deprecated&lt;/h2&gt;&#xA;&lt;p&gt;none&lt;/p&gt;</description>
    </item>
    <item>
      <title>reference</title>
      <link>https://codebase.zone/techdoc/java-se/jshell/reference/</link>
      <pubDate>Fri, 28 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/jshell/reference/</guid>
      <description>&lt;p&gt;some of the information presented in this series &lt;strong&gt;JShell guide&lt;/strong&gt; stems from the following references:&lt;/p&gt;</description>
    </item>
    <item>
      <title>deprecated syntax</title>
      <link>https://codebase.zone/techdoc/linux/shell/programming/deprecated/</link>
      <pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/programming/deprecated/</guid>
      <description>Expressions like &lt;em&gt;&lt;code&gt;&amp;lt;expr&amp;gt;&lt;/code&gt;&lt;/em&gt; are still prevalent in the wild. If you work with shell script code that uses this deprecated code</description>
    </item>
    <item>
      <title>Java 14</title>
      <link>https://codebase.zone/techdoc/java-se/version/java-14/</link>
      <pubDate>Sat, 16 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/version/java-14/</guid>
      <description>&lt;p&gt;general availability on 2020-03-17&lt;/p&gt;&#xA;&lt;h1 id=&#34;jeps&#34;&gt;JEPs&lt;/h1&gt;&#xA;&lt;h2 id=&#34;new-features&#34;&gt;new features&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;state&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/305&#39;&gt;JEP 305: Pattern Matching for instanceof &#xA;(Preview)&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;preview&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;instanceof now saves you from explicit, verbose casts.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/343&#39;&gt;JEP 343: Packaging Tool &#xA;(Incubator)&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;incubator&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;create a tool for packaging self-contained Java applications, supporting native packaging formats to give end users a natural installation experience.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/349&#39;&gt;JEP 349: JFR Event Streaming&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;expose JDK Flight Recorder data for continuous monitoring.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/352&#39;&gt;JEP 352: Non-Volatile Mapped Byte Buffers&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;add new JDK-specific file mapping modes so that the FileChannel API can be used to create MappedByteBuffer instances that refer to non-volatile memory. With NVM, it is possible to create and update program state across program runs without the significant translation costs that persistent media normally imply.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/358&#39;&gt;JEP 358: Helpful NullPointerExceptions&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;NPE messages are now more specific about the cause than just listing the line number of the code where the unlucky consumer is.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/359&#39;&gt;JEP 359: Records &#xA;(Preview)&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;preview&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;a new kind of restricted class for data containers without boiler code.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/361&#39;&gt;JEP 361: Switch Expressions&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;extended switch statement that can be used as either a statement or an expression. both forms can use either a &amp;ldquo;traditional&amp;rdquo; or &amp;ldquo;simplified&amp;rdquo; scoping and control flow behavior. see &lt;a href=&#34;../java-12/#jep-325-switch-expressions-preview&#34;&gt;comments on &amp;lsquo;JEP 325: Switch Expressions (Preview)&amp;rsquo;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/364&#39;&gt;JEP 364: ZGC on macOS &#xA;(Experimental)&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;experimental&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;macOS port of the ZGC garbage collector.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/365&#39;&gt;JEP 365: ZGC on Windows &#xA;(Experimental)&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;experimental&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Windows port of the ZGC garbage collector.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/368&#39;&gt;JEP 368: Text Blocks &#xA;(Second Preview)&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;second preview&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;add text blocks to the java language. a text block is a multi-line string literal that avoids the need for most escape sequences, automatically formats the string in a predictable way, and gives the developer control over format when desired. see &lt;a href=&#34;../java-13/#jep-355-text-blocks-preview&#34;&gt;comments on &amp;lsquo;JEP 355: Text Blocks (Preview)&amp;rsquo;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/370&#39;&gt;JEP 370: Foreign-Memory Access API &#xA;(Incubator)&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;incubator&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;an API to allow Java programs to safely and efficiently access foreign memory outside of the Java heap. Applications include sharing memory across multiple processes, and serialization / deserialization of memory content by mapping files into memory (via, e.g., mmap).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;jdk-internal&#34;&gt;JDK internal&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/345&#39;&gt;JEP 345: NUMA-Aware Memory Allocation for G1&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;improves G1 performance on large machines by implementing NUMA-aware memory allocation.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;deprecated&#34;&gt;deprecated&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/362&#39;&gt;JEP 362: Deprecate the Solaris and SPARC Ports&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;deprecate the Solaris/SPARC, Solaris/x64, and Linux/SPARC ports, with the intent to remove them in a future release.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/366&#39;&gt;JEP 366: Deprecate the ParallelScavenge &amp;#43; SerialOld GC Combination&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;deprecate the combination of the Parallel Scavenge and Serial Old garbage collection algorithms. It is not a goal to remove this GC combination.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;removed&#34;&gt;removed&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/363&#39;&gt;JEP 363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;remove the Concurrent Mark Sweep (CMS) garbage collector.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/367&#39;&gt;JEP 367: Remove the Pack200 Tools and API&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;remove the pack200 and unpack200 tools, and the Pack200 API in the java.util.jar package. These tools and API were deprecated for removal in Java SE 11 with the express intent to remove them in a future release.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;some-feature-details&#34;&gt;some feature details&lt;/h1&gt;&#xA;&lt;h2 id=&#34;jep-305-pattern-matching-for-instanceof-preview&#34;&gt;JEP 305: Pattern Matching for instanceof (Preview)&lt;/h2&gt;&#xA;&lt;p&gt;You can now save the explicit cast after an &lt;button class=&#34;emph emph-code&#34; disabled&gt;instanceof&lt;/button&gt; test with code like&#xA;this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>testing</title>
      <link>https://codebase.zone/techdoc/linux/shell/programming/testing/</link>
      <pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/shell/programming/testing/</guid>
      <description>&lt;h2 id=&#34;shellcheck&#34;&gt;shellcheck&lt;/h2&gt;&#xA;&lt;p&gt;Check shell scripts with &amp;lsquo;shellcheck&amp;rsquo;&lt;/p&gt;&#xA;&lt;h2 id=&#34;print-out-executed-expression&#34;&gt;print out executed expression&lt;/h2&gt;&#xA;&lt;p&gt;Test shell scripts with the &amp;lsquo;-x&amp;rsquo; switch:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java 15</title>
      <link>https://codebase.zone/techdoc/java-se/version/java-15/</link>
      <pubDate>Sat, 16 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/version/java-15/</guid>
      <description>&lt;p&gt;general availability on 202-09-15&lt;/p&gt;&#xA;&lt;h1 id=&#34;jeps&#34;&gt;JEPs&lt;/h1&gt;&#xA;&lt;h2 id=&#34;new-features&#34;&gt;new features&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;state&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/339&#39;&gt;JEP 339: Edwards-Curve Digital Signature Algorithm (EdDSA)&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;EdDSA has a better performance than the existing ECDSA implementation (which uses native C code) at the same security strength. This new signature scheme does not replace ECDSA.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/360&#39;&gt;JEP 360: Sealed Classes &#xA;(Preview)&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;preview&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;allows the author of a class to specify which classes may extend the class. This allows for more fine grained control of inheritance hierarchies.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/371&#39;&gt;JEP 371: Hidden Classes&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;hidden classes are classes that cannot be used directly by the bytecode of other classes. Hidden classes are intended for use by frameworks that generate classes at run time and use them indirectly, via reflection.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/375&#39;&gt;JEP 375: Pattern Matching for instanceof &#xA;(Second Preview)&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;second preview&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;instanceof now saves you from explicit, verbose casts. see &lt;a href=&#34;../java-14/#jep-305-pattern-matching-for-instanceof-preview&#34;&gt;comments on &amp;lsquo;JEP 305: Pattern Matching for instanceof (Preview)&amp;rsquo;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/377&#39;&gt;JEP 377: ZGC, A Scalable Low-Latency Garbage Collector&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;production&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;the Z Garbage Collector changes from an experimental feature into a product feature. see &lt;a href=&#34;../java-11/#jep-333-zgc-a-scalable-low-latency-garbage-collector&#34;&gt;comments on &amp;lsquo;JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)&amp;rsquo; &lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/378&#39;&gt;JEP 378: Text Blocks&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;see &lt;a href=&#34;../java-13/#jep-355-text-blocks-preview&#34;&gt;comments on &amp;lsquo;JEP 355: Text Blocks (Preview)&amp;rsquo;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/379&#39;&gt;JEP 379: Shenandoah&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;production&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;a GC which reduces GC pause times by doing evacuation work concurrently with the running Java threads. Pause times are independent of heap size, the goal is to never interrupt the running program for more than a handful of milliseconds. see &lt;a href=&#34;../java-12/#jep-189-shenandoah-a-low-pause-time-garbage-collector-experimental&#34;&gt;comments on &amp;lsquo;JEP 189: Shenandoah, A Low-Pause-Time Garbage Collector (Experimental)&amp;rsquo;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/383&#39;&gt;JEP 383: Foreign-Memory Access API (Second Incubator)&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;incubator&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;an API to allow Java programs to safely and efficiently access foreign memory outside of the Java heap. Applications include sharing memory across multiple processes, and serialization / deserialization of memory content by mapping files into memory (via, e.g., mmap).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/384&#39;&gt;JEP 384: Records (Second Preview)&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;preview&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;a new kind of restricted class for data containers without boiler code. see &lt;a href=&#34;../java-14/#jep-359-records-preview&#34;&gt;comments on &amp;lsquo;JEP 359: Records (Preview)&amp;rsquo;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;jdk-internal&#34;&gt;JDK internal&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/373&#39;&gt;JEP 373: Reimplement the Legacy DatagramSocket API&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;From JEP 373, Motivation: &amp;ldquo;The code base of the java.net.DatagramSocket and java.net.MulticastSocket APIs, and their underlying implementations, is old and brittle.&amp;rdquo;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;deprecated&#34;&gt;deprecated&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/374&#39;&gt;JEP 374: Deprecate and Disable Biased Locking&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;disable biased locking by default, and deprecate all related command-line options.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/385&#39;&gt;JEP 385: Deprecate RMI Activation for Removal&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;deprecate the RMI Activation mechanism for future removal. RMI Activation is an obsolete part of RMI that has been optional since Java 8. No other part of RMI will be deprecated.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;removed&#34;&gt;removed&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/372&#39;&gt;JEP 372: Remove the Nashorn JavaScript Engine&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;remove the Nashorn JavaScript script engine and APIs, and the jjs tool. The engine, the APIs, and the tool were deprecated for removal in Java 11.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/381&#39;&gt;JEP 381: Remove the Solaris and SPARC Ports&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;remove the source code and build support for the Solaris/SPARC, Solaris/x64, and Linux/SPARC ports. These ports were deprecated for removal in JDK 14.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;some-feature-details&#34;&gt;some feature details&lt;/h1&gt;&#xA;&lt;h2 id=&#34;jep-360-sealed-classes-preview&#34;&gt;JEP 360: Sealed Classes (Preview)&lt;/h2&gt;&#xA;&lt;p&gt;The motivation behind sealed classes is to provide a more fine grained control of which&#xA;classes may be permitted to extend a class. Traditional approaches to control class&#xA;inheritance include:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java 16</title>
      <link>https://codebase.zone/techdoc/java-se/version/java-16/</link>
      <pubDate>Wed, 20 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/version/java-16/</guid>
      <description>&lt;p&gt;general availability on 2021-03-16&lt;/p&gt;&#xA;&lt;h1 id=&#34;jeps&#34;&gt;JEPs&lt;/h1&gt;&#xA;&lt;h2 id=&#34;new-features&#34;&gt;new features&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;state&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/338&#39;&gt;JEP 338: Vector API (Incubator)&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;incubator&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;provide an initial iteration of an incubator module, jdk.incubator.vector, to express vector computations that reliably compile at runtime to optimal vector hardware instructions on supported CPU architectures and thus achieve superior performance to equivalent scalar computations.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/380&#39;&gt;JEP 380: Unix-Domain Socket Channels&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;add Unix-domain (AF_UNIX) socket support to the socket channel and server-socket channel APIs in the java.nio.channels package. Extend the inherited channel mechanism to support Unix-domain socket channels and server socket channels.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/386&#39;&gt;JEP 386: Alpine Linux Port&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;port the JDK to Alpine Linux, and to other Linux distributions that use musl as their primary C library, on both the x64 and AArch64 architectures.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/388&#39;&gt;JEP 388: Windows/AArch64 Port&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;port the JDK to Windows/AArch64. The focus of this JEP is not the porting effort itself, which is mostly complete, but rather the integration of the port into the JDK main-line repository.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/389&#39;&gt;JEP 389: Foreign Linker API&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;incubator&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;introduce an API that offers statically-typed, pure-Java access to native code. This API, together with the Foreign-Memory API (JEP 393), will considerably simplify the otherwise error-prone process of binding to a native library.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/390&#39;&gt;JEP 390: Warnings for Value-Based Classes&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;designate the primitive wrapper classes as value-based and deprecate their constructors for removal, prompting new deprecation warnings. Provide warnings about improper attempts to synchronize on instances of any value-based classes in the Java Platform.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/392&#39;&gt;JEP 392: Packaging Tool&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Provide the jpackage tool, for packaging self-contained Java applications&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/393&#39;&gt;JEP 393: Foreign-Memory Access API&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;third incubator&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;an API to allow Java programs to safely and efficiently access foreign memory outside of the Java heap. Applications include sharing memory across multiple processes, and serialization / deserialization of memory content by mapping files into memory (via, e.g., mmap).&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/394&#39;&gt;JEP 394: Pattern Matching for instanceof&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;instanceof now saves you from explicit, verbose casts. see &lt;a href=&#34;../java-14/#jep-305-pattern-matching-for-instanceof-preview&#34;&gt;comments on &amp;lsquo;JEP 305: Pattern Matching for instanceof (Preview)&amp;rsquo;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/395&#39;&gt;JEP 395: Records&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;a new kind of restricted class for data containers without boiler code. see &lt;a href=&#34;../java-14/#jep-359-records-preview&#34;&gt;comments on &amp;lsquo;JEP 359: Records (Preview)&amp;rsquo;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/396&#39;&gt;JEP 396: Strongly Encapsulate JDK Internals by Default&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Code successfully compiled with earlier releases that directly accesses internal APIs of the JDK will no longer work by default. The strong encapsulation, which has been the default since JDK 9 can be relaxed with the JVM option &lt;em&gt;&amp;ndash;illegal-access&lt;/em&gt;. The sun.misc package will still be exported by the jdk.unsupported module, and will still be accessible via reflection. Hacking open private fields and protected or private methods of exported java.* APIs by reflection will result in an java.lang.reflect.InaccessibleObjectException.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/397&#39;&gt;JEP 397: Sealed Classes&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;second preview&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;allows the author of a class to specify which classes may extend the class. This allows for more fine grained control of inheritance hierarchies. see &lt;a href=&#34;../java-15/#jep-360-sealed-classes-preview&#34;&gt;comments on &amp;lsquo;JEP 360: Sealed Classes (Preview)&amp;rsquo;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;jdk-internal&#34;&gt;JDK internal&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/347&#39;&gt;JEP 347: Enable C&amp;#43;&amp;#43;14 Language Features&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;formally allow C++ source code changes within the JDK to take advantage of C++14 language features, and to give specific guidance about which of those features may be used in HotSpot code.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/357&#39;&gt;JEP 357: Migrate from Mercurial to Git&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;migrate the OpenJDK Community&amp;rsquo;s source code repositories from Mercurial (hg) to Git.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/376&#39;&gt;JEP 376: ZGC&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;move ZGC thread-stack processing from safepoints to a concurrent phase.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/387&#39;&gt;JEP 387: Elastic Metaspace&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;return unused HotSpot class-metadata (i.e., metaspace) memory to the operating system more promptly, reduce metaspace footprint, and simplify the metaspace code in order to reduce maintenance costs.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;deprecated&#34;&gt;deprecated&lt;/h2&gt;&#xA;&lt;p&gt;none&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java 17</title>
      <link>https://codebase.zone/techdoc/java-se/version/java-17/</link>
      <pubDate>Tue, 04 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/version/java-17/</guid>
      <description>&lt;p&gt;general availability on 2021-09-14&lt;/p&gt;&#xA;&lt;h1 id=&#34;jeps&#34;&gt;JEPs&lt;/h1&gt;&#xA;&lt;h2 id=&#34;new-features&#34;&gt;new features&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;state&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/306&#39;&gt;JEP 306: Restore Always-Strict Floating-Point Semantics&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;make floating-point operations consistently strict, rather than have both strict floating-point semantics (strictfp) and subtly different default floating-point semantics. This will restore the original floating-point semantics to the language and VM, matching the semantics before the introduction of strict and default floating-point modes in Java SE 1.2.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/356&#39;&gt;JEP 356: Enhanced Pseudo-Random Number Generators&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;the new interface &lt;em&gt;RandomGenerator&lt;/em&gt; supplies a uniform API for all existing and new PRNGs. RandomGenerators provide methods named ints, longs, doubles, nextBoolean, nextInt, nextLong, nextDouble, and nextFloat, with all their current parameter variations.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/403&#39;&gt;JEP 403: Strongly Encapsulate JDK Internals&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;Code successfully compiled with earlier releases that directly accesses internal APIs of the JDK will no longer work by default. The strong encapsulation, which has been the default since JDK 9 can be relaxed with the JVM option &lt;em&gt;&amp;ndash;illegal-access&lt;/em&gt;. The sun.misc package will still be exported by the jdk.unsupported module, and will still be accessible via reflection. Hacking open private fields and protected or private methods of exported java.* APIs by reflection will result in an java.lang.reflect.InaccessibleObjectException. see comment on &lt;a href=&#34;../java-16/#jep-396-strongly-encapsulate-jdk-internals-by-default&#34;&gt;JEP 396: Strongly Encapsulate JDK Internals by Default&lt;/a&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/406&#39;&gt;JEP 406: Pattern Matching for switch&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;preview&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;introduces pattern matching for switch expressions and statements, along with extensions to the language of patterns.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/409&#39;&gt;JEP 409: Sealed Classes&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;allows the author of a class to specify which classes may extend the class. This allows for more fine grained control of inheritance hierarchies. See comments on &lt;a href=&#34;../java-15/#jep-360-sealed-classes-preview&#34;&gt;JEP 360: Sealed Classes (Preview)&lt;/a&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/412&#39;&gt;JEP 412: Foreign Function &amp;amp; Memory API&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;incubator&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;eases the acces for devs to code and data on the same machine as the JVM but outside of the JVM, without the drawbacks of JNI.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/414&#39;&gt;JEP 414: Vector API&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;second incubator&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;provides a second iteration of an incubator module, jdk.incubator.vector, to express vector computations that reliably compile at runtime to optimal vector hardware instructions on supported CPU architectures and thus achieve superior performance to equivalent scalar computations.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/415&#39;&gt;JEP 415: Context-Specific Deserialization Filters&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;allows applications to configure context-specific and dynamically-selected deserialization filters via a JVM-wide filter factory that is invoked to select a filter for each individual deserialization operation. This JEP addresses some drawbacks of the deserialization filters introduced in Java 9 with &lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/290&#39;&gt;JEP 290: Filter Incoming Serialization Data&#xA;&lt;/a&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;jdk-internal&#34;&gt;JDK internal&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/382&#39;&gt;JEP 382: New macOS Rendering Pipeline&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;implement a Java 2D internal rendering pipeline for macOS using the Apple Metal API as alternative to the existing pipeline, which uses the deprecated Apple OpenGL API.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/391&#39;&gt;JEP 391: macOS/AArch64 Port&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;port the JDK to macOS/AArch64. Apple has announced a long-term plan to transition their line of Macintosh computers from x64 to AArch64.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;deprecated&#34;&gt;deprecated&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/398&#39;&gt;JEP 398: Deprecate the Applet API for Removal&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;deprecate the Applet API for removal. The Applet API was previously deprecated, though not for removal, by &lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/289&#39;&gt;JEP 289: Deprecate the Applet API&#xA;&lt;/a&gt; in Java 9.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/411&#39;&gt;JEP 411: Deprecate the Security Manager for Removal&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;deprecates the Security Manager for removal in a future release. The Security Manager dates from Java 1.0. It has not been the primary means of securing client-side Java code for many years, and it has rarely been used to secure server-side code.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;removed&#34;&gt;removed&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/407&#39;&gt;JEP 407: Remove RMI Activation&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;removes the Remote Method Invocation (RMI) Activation mechanism, while preserving the rest of RMI. The Jakarta Activation (JavaBeans Activation Framework / JAF in Java EE) is completely unrelated to the Java SE Remote Method Invocation (RMI) Activation and thus not affected by the removal.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/410&#39;&gt;JEP 410: Remove the Experimental AOT and JIT Compiler&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;remove the experimental Java-based ahead-of-time (AOT) and just-in-time (JIT) compiler. This compiler has seen little use since its introduction and the effort required to maintain it is significant. Devs who want to use the Graal compiler for either AOT or JIT compilation can use the  &lt;a href=&#39;https://www.graalvm.org&#39;&gt;Graal VM&lt;/a&gt; &lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;some-feature-details&#34;&gt;some feature details&lt;/h1&gt;&#xA;&lt;h2 id=&#34;jep-356-enhanced-pseudo-random-number-generators&#34;&gt;JEP 356: Enhanced Pseudo-Random Number Generators&lt;/h2&gt;&#xA;&lt;p&gt;Four new specialized random generator interfaces that extend &lt;em&gt;RandomGenerator&lt;/em&gt; are provided:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java 18</title>
      <link>https://codebase.zone/techdoc/java-se/version/java-18/</link>
      <pubDate>Thu, 06 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/version/java-18/</guid>
      <description>&lt;p&gt;general availability on 2022-03-22&lt;/p&gt;&#xA;&lt;h1 id=&#34;jeps&#34;&gt;JEPs&lt;/h1&gt;&#xA;&lt;h2 id=&#34;new-features&#34;&gt;new features&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;state&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/400&#39;&gt;JEP 400: UTF-8 by Default&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;specifies UTF-8 as the default charset of the standard Java APIs. APIs that depend upon the default charset will behave consistently across all implementations, operating systems, locales, and configurations.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/408&#39;&gt;JEP 408: Simple Web Server&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;provides a command-line tool to start a minimal web server that serves static files only (no CGI or servlet-like functionality) for prototyping, ad-hoc coding, and testing purposes, particularly in educational contexts.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/413&#39;&gt;JEP 413: Code Snippets in Java API Documentation&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;introduces an @snippet tag for JavaDoc&amp;rsquo;s Standard Doclet, to simplify the inclusion of example source code in API documentation.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/417&#39;&gt;JEP 417: Vector API&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;third incubator&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;provide a third iteration of an incubator module, jdk.incubator.vector, to express vector computations that reliably compile at runtime to optimal vector hardware instructions on supported CPU architectures and thus achieve superior performance to equivalent scalar computations.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/418&#39;&gt;JEP 418: Internet-Address Resolution SPI&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;define a service-provider interface (SPI) for host name and address resolution, so that java.net.InetAddress can make use of resolvers other than the platform&amp;rsquo;s built-in resolver.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/419&#39;&gt;JEP 419: Foreign Function &amp;amp; Memory API&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;second incubator&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;eases the acces for devs to code and data on the same machine as the JVM but outside of the JVM, without the drawbacks of JNI.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/420&#39;&gt;JEP 420: Pattern Matching for switch&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;second preview&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;introduces pattern matching for switch expressions and statements, along with extensions to the language of patterns. See comments on &lt;a href= &#34;../java-17/#jep-406-pattern-matching-for-switch-preview&#34;&gt;JEP 406: Pattern Matching for switch (Preview)&lt;/a&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;jdk-internal&#34;&gt;JDK internal&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/416&#39;&gt;JEP 416: Reimplement Core Reflection with Method Handles&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;reimplement java.lang.reflect.Method, Constructor, and Field on top of java.lang.invoke method handles. Making method handles the underlying mechanism for reflection will reduce the maintenance and development cost of both the java.lang.reflect and java.lang.invoke APIs.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;deprecated&#34;&gt;deprecated&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/421&#39;&gt;JEP 421: Deprecate Finalization for Removal&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;deprecate finalization for removal in a future release. Finalization remains enabled by default for now, but can be disabled to facilitate early testing. In a future release it will be disabled by default, and in a later release it will be removed. Note that finalization is distinct from both the finally block of the try-finally construct. No changes are proposed to try-finally.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;removed&#34;&gt;removed&lt;/h2&gt;&#xA;&lt;p&gt;none&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java 19</title>
      <link>https://codebase.zone/techdoc/java-se/version/java-19/</link>
      <pubDate>Thu, 06 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/java-se/version/java-19/</guid>
      <description>&lt;p&gt;general availability on 20 September 2022&lt;/p&gt;&#xA;&lt;h1 id=&#34;jeps&#34;&gt;JEPs&lt;/h1&gt;&#xA;&lt;h2 id=&#34;new-features&#34;&gt;new features&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;JEP&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;state&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: left&#34;&gt;summary /remark&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/405&#39;&gt;JEP 405: Record Patterns&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;preview&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;introduces record patterns to deconstruct record values. Record patterns and type patterns can be nested to for a declarative and composable form of data navigation and processing.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/422&#39;&gt;JEP 422: Linux/RISC-V Port&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;standard&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;port the JDK to Linux/RISC-V.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/424&#39;&gt;JEP 424: Foreign Function &amp;amp; Memory API&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;preview&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;eases the access for devs to code and data on the same machine as the JVM but outside of the JVM, without the drawbacks of JNI.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/425&#39;&gt;JEP 425: Virtual Threads&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;preview&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;introduces lightweight threads called &lt;em&gt;virtual threads&lt;/em&gt; to the Java platform.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/426&#39;&gt;JEP 426: Vector API&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;fourth incubator&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;provides a second iteration of an incubator module, jdk.incubator.vector, to express vector computations that reliably compile at runtime to optimal vector hardware instructions on supported CPU architectures and thus achieve superior performance to equivalent scalar computations.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/427&#39;&gt;JEP 427: Pattern Matching for switch&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;third preview&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;introduces pattern matching for switch expressions and statements, along with extensions to the language of patterns. See comments on &lt;a href= &#34;../java-17/#jep-406-pattern-matching-for-switch-preview&#34;&gt;JEP 406: Pattern Matching for switch (Preview)&lt;/a&gt;.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;&lt;i class=&#34;fas fa-arrow-up-right-from-square&#34;&gt;&lt;/i&gt;&#xA;      &lt;a href=&#39;https://openjdk.org/jeps/428&#39;&gt;JEP 428:&#x9;Structured Concurrency&#xA;&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;incubator&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: left&#34;&gt;simplifies multithreaded programming by introducing an API for structured concurrency. Structured concurrency treats multiple tasks running in different threads as a single unit of work, thereby streamlining error handling and cancellation, improving reliability, and enhancing observability.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;jdk-internal&#34;&gt;JDK internal&lt;/h2&gt;&#xA;&lt;p&gt;none&lt;/p&gt;</description>
    </item>
    <item>
      <title>importing repos into Gitea</title>
      <link>https://codebase.zone/techdoc/dev-tools/gitea/adopt-repo/</link>
      <pubDate>Fri, 29 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/dev-tools/gitea/adopt-repo/</guid>
      <description>&lt;p&gt;Repos that have been created outside gitea can be imported, or in Gitea speak &lt;em&gt;adopted&lt;/em&gt;, and managed by Gitea.&#xA;I&amp;rsquo;m using both terms &lt;em&gt;import&lt;/em&gt; and &lt;em&gt;adopt&lt;/em&gt; here.&lt;/p&gt;</description>
    </item>
    <item>
      <title>issues and fixes</title>
      <link>https://codebase.zone/techdoc/dev-tools/gitea/issues-and-fixes/</link>
      <pubDate>Fri, 29 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/dev-tools/gitea/issues-and-fixes/</guid>
      <description>&lt;h3 id=&#34;starting-gitea-with-another-user-than-defined-in-giteaconf&#34;&gt;starting gitea with another user than defined in &lt;em&gt;gitea.conf&lt;/em&gt;&lt;/h3&gt;&#xA;&lt;p&gt;results in:&lt;/p&gt;&#xA;&lt;div class=&#34;code&#34;&gt;&#xA;... routers/init.go:74:mustInitCtx() [F] code.gitea.io/gitea/modules/git.InitFull(ctx) failed: failed to set git global config diff.algorithm, err: exit status 255 - warning: unable to access &amp;#39;/home/rudolf/.config/git/gitconfig&amp;#39;: Permission denied&#xA;error: could not lock config file /home/rudolf/.config/git/gitconfig: Permission denied&#xA;- warning: unable to access &amp;#39;/home/rudolf/.config/git/gitconfig&amp;#39;: Permission denied&#xA;  error: could not lock config file /home/rudolf/.config/git/gitconfig: Permission denied&#xA;&lt;/div&gt;&#xA;&lt;p&gt;the fix is to run &lt;button class=&#34;emph emph-command&#34; disabled&gt;unset GIT_CONFIG_GLOBAL&lt;/button&gt; before running gitea.&lt;/p&gt;</description>
    </item>
    <item>
      <title>installing your own Root CA certificate</title>
      <link>https://codebase.zone/techdoc/linux/setup/ca-certificate/</link>
      <pubDate>Wed, 20 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/linux/setup/ca-certificate/</guid>
      <description>&lt;p&gt;Before you can install your own &lt;em&gt;Root CA Certificate&lt;/em&gt; you need to set up your own &lt;em&gt;CA&lt;/em&gt; (Certificate Authority).&lt;/p&gt;</description>
    </item>
    <item>
      <title>frontmatter</title>
      <link>https://codebase.zone/techdoc/frontend/hugo/code-shreds/frontmatter/</link>
      <pubDate>Sat, 13 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/techdoc/frontend/hugo/code-shreds/frontmatter/</guid>
      <description>&lt;h1 id=&#34;quoting-in-dynamic-values&#34;&gt;quoting in dynamic values&lt;/h1&gt;&#xA;&lt;p&gt;It&amp;rsquo;s a bit counterintuitive, but the following works, no escaping of the double quotes is required:&lt;/p&gt;</description>
    </item>
    <item>
      <title>how to asses a hype</title>
      <link>https://codebase.zone/blog/2026/07/assessing-hypes/</link>
      <pubDate>Wed, 15 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/blog/2026/07/assessing-hypes/</guid>
      <description>&lt;p&gt;The genAI hype is crashing against reality. The profits that the use of genAI have been promised have not&#xA;materialized. No near-total white-collar jobs wipe-out happened, as some doomsday fortune-teller predicted.&#xA;Companies re-hire call center agents they fired a while ago. Seems that genAI chatbots wasn&amp;rsquo;t such a good bet.&#xA;Codebases are more bug-ridden than ever. Using genAI trained on bananaware (the product matures at the customer&amp;rsquo;s site)&#xA;wasn&amp;rsquo;t such a terrible good idea, neither. I&amp;rsquo;m still waiting for those butt-ugly genAI images disappearing from&#xA;blog posts and websites, like some of the 90&amp;rsquo;ties worst style crimes on the web did.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stop Targeting Junior Devs</title>
      <link>https://codebase.zone/blog/2026/06/04-stop-trageting-junior-devs/</link>
      <pubDate>Thu, 04 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/blog/2026/06/04-stop-trageting-junior-devs/</guid>
      <description>&lt;p&gt;The recurring theme of the disappearing developer &amp;hellip; Now it&amp;rsquo;s the undergraduate students and junior devs who are getting targeted.&#xA;From low-code, no-code, ADF to outsourcing, from time to time crops up some &amp;ldquo;innovative&amp;rdquo; way to replace lots if not almost&#xA;all of those pesky devs that take just too much time to churn out the stuff we want from them. Didn&amp;rsquo;t work out so well&#xA;each and every time. It won&amp;rsquo;t work this time either.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Endlich: ein xDD zum aktuellen Hype um LLMs</title>
      <link>https://codebase.zone/blog/2026/05/22-das-musste-ja-kommen/</link>
      <pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/blog/2026/05/22-das-musste-ja-kommen/</guid>
      <description>&lt;p&gt;BDD, MDD, TDD und andere DDs haben mir und den Teams, mit denen ich gute Software bauen konnte, nicht besonders viel&#xA;gebracht oder wurden gar nicht erst eingesetzt. Domain Driven Design nehme ich hier raus, dazu gleich mehr.&lt;/p&gt;</description>
    </item>
    <item>
      <title>a quick vi survival guide</title>
      <link>https://codebase.zone/blog/2023/05/18-vi/</link>
      <pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/blog/2023/05/18-vi/</guid>
      <description>&lt;p&gt;This is for when you get stuck with an abomination of an editor called vi.&#xA;No sophisticated vi-foo here, this is just the basics that get you covered for simple editing of files.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CI/CD server landscape in 2026</title>
      <link>https://codebase.zone/blog/2026/05/05-cicd-landsacpe/</link>
      <pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/blog/2026/05/05-cicd-landsacpe/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s been a while since I have checked what is going on in the development of CI/CD servers. I&amp;rsquo;ve worked extensively&#xA;with Bamboo and TeamCity, and have a fair amount of exposure to GitLab and GitHub. Time for a quick survey.&lt;/p&gt;</description>
    </item>
    <item>
      <title>why I don&#39;t use AI tools for coding or writing in general</title>
      <link>https://codebase.zone/blog/2025/10/why-i-dont-use-ai-for-coding-or-writing/</link>
      <pubDate>Thu, 16 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/blog/2025/10/why-i-dont-use-ai-for-coding-or-writing/</guid>
      <description>&lt;p&gt;If I tell people that I don&amp;rsquo;t to use AI tools for coding or my site, I see incredulous looks and get remarks from which&#xA;I conclude that people see me in the backwards camp. I use the following rule that has proven itself in science, when&#xA;I evaluate new tools and techniques: the more outrageous the claim, the more convincing the arguments for supporting&#xA;it must be. Some simple tests should prove the claim or at least make the tool or technique look very promising.&lt;/p&gt;</description>
    </item>
    <item>
      <title>some notes on installing Gitea</title>
      <link>https://codebase.zone/blog/2025/08/27-gitea/</link>
      <pubDate>Wed, 27 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/blog/2025/08/27-gitea/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been running a heavily outdated version of Gitea. Rather than doing an update on it, I just reinstalled it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>why I&#39;d never work with Jenkins</title>
      <link>https://codebase.zone/blog/2023/02/jenkins/</link>
      <pubDate>Sat, 04 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/blog/2023/02/jenkins/</guid>
      <description>&lt;p&gt;Another day, another project turned down, because they use Jenkins for CI/CD (the requirements were that I actually would have&#xA;had to work with that piece of crap).&lt;/p&gt;</description>
    </item>
    <item>
      <title>damned ... 404</title>
      <link>https://codebase.zone/error/404/</link>
      <pubDate>Sun, 26 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://codebase.zone/error/404/</guid>
      <description>&lt;h3&gt;You are viewing this page because the page you selected was not found.&#xA;Either this page doesn&#39;t exist, or the server is stalling.&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://codebase.zone/&#34;&gt;&lt;h3&gt;click here to go to the homepage&lt;/h3&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
