Java

From BC$ MobileTV Wiki
Jump to: navigation, search
Java (cup of java) Logo

Java is one of the world's leading object-oriented open source programming languages.[1] It enables programmers to write computer instructions using English based commands, instead of having to write in numeric codes which a computer understands directly, or a lower level language such as machine-specific Assembly Language. It’s known as a “high-level” language because it can be read and written easily by humans. Like English, Java has a set of rules that determine how the instructions are written. These rules are known as its “syntax”. Once a program has been written, the high-level instructions are translated into numeric codes that computers can understand and execute.[2] Java's particularly robust and extensible, object-oriented nature lends to a set of powerful design patterns[3][4].

Duke (Java Web Start) mascot

Duke

Duke was created as the "faceless" face of Java and featured prominently in the Sun's Java API and help/tutorial documentation as the official mascot of the Java programming language.


Major & Minor J2SE releases


History

Java didn't set out to be a better C for every programmer, and in fact had an identity crisis early in its life. It started out in 1991 as a language called "Oak", part of a small project called the "Green Team" initiated by Patrick Naughton, Mike Sheridan, and James Gosling, who is primarily credited with the design of the language that became Java. (Bryan Youmans has a page on the history of Java, with some interesting thoughts on the language design. There's also an official version of the history from Sun.)

The original goal of the Green Team was to produce a single operating environment that could be used for controlling a wide range of consumer devices such as video games and TV set-top boxes. A key part of the environment would be a programming language that was completely independent of the processor it ran on. The image of "Duke" (shown at right), well-known as the Java mascot, dates from this period; Duke represented a software agent who performed tasks on behalf of the end user.[5]

Java version roadmap, 2018 and beyond

TV Set-Top Boxes

As it turned out, targeted industries such as cable TV were not ready for the concepts the Green Team was selling, but the kind of active, user-selected content they had envisioned was emerging in a new medium: The Internet.

So in 1995, Java found a market "Delivering a new level of interactivity to client browsers on the World Wide Web". Its ability to run the same code on any processor ("write once, run anywhere" as has long been the Java slogan) was exactly what was needed to download chunks of code called "applets" to be run on a heterogeneous universe of client architectures.[6]


Portability

"Write Once, Run Anywhere" is the motto for the Java programming language. In order to accomplish this primary design goal, the first implementations of Java used an interpreted virtual machine. These implementations produced programs that ran more slowly than programs compiled to native executables, for instance written in C or C++, so the language suffered a reputation for poor performance as a trade-off for portability. More recent JVM implementations produce programs that run significantly faster than before, using multiple techniques.

The first technique is to simply compile directly into native code like a more traditional compiler, skipping bytecodes entirely. This achieves good performance, but at the expense of portability. Another technique, known as just-in-time compilation (JIT), translates the Java bytecodes into native code at the time that the program is run which results in a program that executes faster than interpreted code but also incurs compilation overhead during execution. More sophisticated VMs use dynamic recompilation, in which the VM can analyze the behavior of the running program and selectively recompile and optimize critical parts of the program. Dynamic recompilation can achieve optimizations superior to static compilation because the dynamic compiler can base optimizations on knowledge about the runtime environment and the set of loaded classes. JIT compilation and dynamic recompilation allow Java programs to take advantage of the speed of native code without losing portability.[7]

[8] [9] [10] [11] [12] [13]

1

2

3

4


5

Java SE's JRE/JDK 1.5 was released on 2004-09-30.


6

Java SE's JRE/JDK 1.8 was released on 2006-12-11.

[15]


7

Java SE's JRE/JDK 1.7 was released on 2011-07-07.

[17] [18] [19] [20] [21]


8

Java SE's JRE/JDK 1.8 was released on 2014-03-18.


[24] [25] [26] [27]


9

Java SE's JRE/JDK 1.9 was released on 2017-09-21.

[30]

[37] [38] [39] [40] [41] [42]


10

Java SE 10's JRE/JDK 1.10 was released on 2018-03-20.

[45] [46] [47]


11

Java SE 11's JDK (somemetimes also referred to as "Java 1.11" when using the old naming scheme, although this was the last one that should ever be referenced in that scheme) was released on 2018-09-25 and is a "Long Term Support" (LTS) version, supported until end of September, 2023 (with extended support available through September, 2026).

One critical change worth noting with JDK 11 is that Oracle is no longer distributing a separate trimmed down JRE, and instead packaging a combined JRE/JDK. They advise use of "jlink" and modules to package trimmed down "JRE-like" distributions and/or smaller runnable binaries. The JRE/JDK are effectively combined into a single Java platform release now and going forward. Microprofile (formerly J2ME for mobile devices) is still available for "embedded Java" use cases, where compute resources need to be minimized.

[55]

[58]

[59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85]


12

Java SE 12's combined JRE/JDK was released on 2019-03-25.


[86] [87] [88] [89] [90] [91]


13

Java SE 13's combined JRE/JDK was released on 2019-09-25.

[92]


14

Java SE 14's combined JRE/JDK was released on 2020-03-25.

[93] [94] [95] [96] [97] [98] [99] [100] [101]


15

Java SE 15's combined JRE/JDK was released on 2020-09-25.

[102] [103] [104] [105] [106] [107]


16

Java SE 16's combined JRE/JDK was released on 2021-03-25.

[108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119]


17

Java SE 17's combined JRE/JDK is planned for release on 2021-09-25 and will become the latest "Long Term Support" (LTS) version.

[120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137]


18

[138] [139] [140] [141] [142] [143] [144]


19

[145]

Specifications


Language

As a language, Java is comprised of 4 main components:

  1. J2SE - Java 2 Standard Edition and is normally for developing desktop applications, forms the core/base API.
  2. J2EE - Java 2 Enterprise Edition for applications which run on servers, for example web sites.
  3. J2ME - Java 2 Micro Edition for applications which run on resource-constrained devices (small-scale devices) like cell phones and portable media players, apps include games or utilities for the device.
  4. JavaFX - RIA platform which bridges the gap between J2SE and J2EE (roadmap says maybe later J2ME as well) by running on both the desktop and browser on Windows, Linux and Mac).

[149] [150]

JVM

The Java Virtual Machine (commonly abbreviated as JVM) rather than a single thing that exists on a single device or location, is in fact a piece of software (process virtual machine) that must be installed and available (accessible) on a given device or hardware in order to be able to execute Java bytecode on that given device or hardware. The JVM acts as the bootstrap application for Java which is required to be present in order to run code and applications built in Java then compiled into Bytecode for a particular device or hardware. In this sense, it ca be thought of as the code execution component of the Java platform. Before their acquisition by Oracle, Sun Microsystems had last estimated that there are over 5.5 billion JVM-enabled devices in use today.

[151] [152] [153] [154] [155] [156]

GraalVM


JRE

Java Runtime Environment (JRE) is the main cross-platform implementation of the JVM and supporting libraries. JRE comes coupled with most modern operating systems, and can be downloaded or upgraded/patched for Windows, Mac, Unix, Linux & some Mobile device/OS combination (most notable being Android which re-implemented the JRE/JDK as their own Dalvik runtime for applications).

[157]

JDK

Java Development Kit (JDK) contains everything the JRE does but also adds required tooling for developing and packaging Java applications. It includes:

  1. appletviewer - for viewing Java applets
  2. javac - Java compiler
  3. java - Java interpreter
  4. javap - Java disassembler
  5. javah - for C header files
  6. javadoc - for creating HTML files
  7. jdb - Java debugger


[159] [160] [161] [162] [163] [164]


OpenJDK

OSS version of the now commercial Oracle JDK.

[168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178]

Packaging

Packages

System & speficication for adding Package-level comments.

[179] [180] [181] [182] [183] [184] [185] [186] [187] [188]

Modules

[189] [190] [191] [192] [193] [194] [195] [196] [197] [198] [199] [200] [201] [202] [203] [204] [205] [206] [207] [208]

JAR

[215] [216]

[217] [218]

[222] [223] </ref>The Future of Java Applets: https://www.algosome.com/articles/future-of-java-applets.html</ref> [224] [225] [226] [227]

WAR

EAR

Classpath

Classpath is a core parameter passed in to the JVM either on the command-line, through an environment variable or in a Manifest "Class-Path" entry (as in packaged JAR files) that tells the the Java compiler where to look for user-defined classes and packages required by a given Java program or application. [232]


Garbage Collection

[233] [234] [235]

Security

[236] [237]

Operators


File I/O

[238] [239] [240] [241] [242] [243] [244] [245] [246] [247] [248] [249] [250] [251] [252] [253] [254] [255] [256]


Serialization

[257] [258] [259] [260] [261] [262]

Network I/O

[263] [264]

Primitives

Bytes

Money

Currency

Proxy

Methods

[266]

Static

[267]

Hash Code


JavaBeans


Threads

[269] [270] [271] [272] [273] [274] [275] [276] [277] [278] [279] [280] [281] [282] [283] [284] [285] [286] [287] [288]

[289]

RMI

[290] [291] [292] [293] [294]

CORBA

Common Object Request Broker Architecture (CORBA) is a technology for integrating remotely to other systems in Distributed Systems development. It was introduced in Java 1.2 and has been removed from core Java and become a separately maintained open source suite of packages as of Java 11.

[295] [296] [297] [298] [299] [300] [301] [302]

jwebserver


JNI

[303] [304]

JNA

[305]

OOP

Object-Oriented Programming (OOP) is a paradigm at the core of the Java programming language which looks at all data as an Object of a specific Type. This "strong-typing" is one of the core tenets of Java and allows developers to create complex applications that can model just about anything as a single coherent system. Object-Oriented programing conventions should implement three core tenets: Encapsulation, Inheritance, Polymorphism; these are explained below. On top of these characteristics, there are also the main goals of OO which are to be:

  1. Natural - use the terminology of the problem, not the terminology of a computer
  2. Reliable - Modular construction puts knowledge and responsibility where they belong (each component to be tested/validated independently)
  3. Reusable - Properly designed class Objects can form reusable components
  4. Maintainable - Software components may change or even be replaced completely (if done, it should be transparent to rest of system)
  5. Extendable - Permits easy addition of new functionality, as the user's needs change over time.
  6. Timely - Quicker development times from parallel development of independent but related classes by independent developers

[306][307][308] [309]

Encapsulation

Encapsulation, the first key characteristic of OO, means putting together the things that belong together, or grouping data and methods logically (into attributes and operations). In Java, Encapsulation is accomplished by Abstraction.

Abstraction uses the abstract keyword which allows you to create your own unique data types and operations within the scope of your application (or if you publish your Java code as a JAR, WAR or EAR potentially other applications which reference the API you've exposed), while hiding the implementation details. Abstract classes usually define some default implementations or values, and provides at least some useful details which would allow a developer to create a full implementation such as JavaDocs and/or reference implementations. An abstract class specifies that all sub-classes have the same structure (methods, parameters, variables) but might have totally different or identical functionality (implementations). A child of an abstract class need not override (re-implement with different behavior) or overload[310] (re-implement to accept different number or types of input parameters, possibly same behavior or different) any methods, but it could do so if desired. Non-overridden methods in a child of an abstract class will by default inherit the functionality of those methods defined in the parent's abstract class).[311]

Inheritance

Inheritance, the second key characteristic if OO, is the creation of a "family" (or hierarchy) of classes with the same common interface. For example, using the extends keyword you can establish a parent-child relationship, saying that a child class inherits the core traits of its parent class (which can be accessed within the child class using the super keword). Inheritance allows programmers to re-use code they've already written. An alternative to Inheritance is using Composition to create several inner-classes and referencing them from the core class as in the case of a Car class, however this is slightly less modular and reusable which is one of the goals of the OO paradigm. [312]

Polymorphism

Polymorphism, third key characteristic of OO, allows the decoupling of code from the specific type its acting on. Polymorphism literally means "the ability of different things to use the same name". It allows values of different data types to be handled using a uniform interface, and in Java the interface keyword is precisely what denotes this relationship between classes. An interface specifies that all sub-classes have the same structure (methods, parameters, variables) but must have totally different functionality (implementations). [315][316]

Abstract

[319]

Interface

[320]

Generics

Java introduced generic methods and classes back in 2004 with J2SE 1.5, while most developers learned enough about them to use basic collections, there was often a lack of complete understanding for complex upper and lower bounds or method signatures with wildcards. With the recent adoption of Java 8, these types of method signatures are frequent and there is a need to understand Generics in greater detail.

For instance, most could grasp the following code exmaple:

public static <T> T addAndReturn(T element, Collection<T> collection){
   collection.add(element);
   return element;
}

Where "T" is represents the "Type" of the Object which will change dynamically depending on the calling code block and intentions of the implementation.

However the following proves difficult for most Devs:

static <T,K,D,A,M extends Map<K, D>> Collector<T,?,M> groupingBy(Function<? super T,? extends K> classifier, Supplier<M> mapFactory, Collector<? super T,A,D> downstream)

Where "T" is represents the "Type" of the Object, K is a "Key", "D" is a Datatype, "A" is an Accumulator, "M" is a Map.


[321] [322] [323] [324] [325] [326] [327] [328]


Optional

[329] [330] [331] [332] [333] [334] [335] [336] [337] [338] [339] [340]

Type-inference

[341] [342] [343]


Collections

Lists

[347] [348] [349]

Sets

Maps

[351] [352] [353] [354] [355] [356] [357]

Streams

[358] [359] [360] [361] [362] [363] [364] [365] [366] [367] [368] [369] [370] [371] [372] [373] [374] [375] [376] [377] [378] [379] [380] [381] [382] [383] [384] [385] [386] [387] [388] [389] [390] [391]


Lambda Expressions

Lambda Expressions are a new feature in Java 8 that allow "anonymous functions" to simplify Java development syntax.

[393] [394] [395] [396] [397] [398] [399] [400] [401] [402] [403] [404] [405] [406] [407] [408] [409] [410] [411] [412] [413] [414] [415] [416] [417] [418] [419] [420] [421] [422] [423] [424] [425] [426] [427] [428] [429] [430] [431] [432] [433] [434] [435] [436]

Records

[437] [438] [439] [440]

JMX

[441]

JNDI

Java Naming and Directory Interface (JNDI) is an API that offers a unified interface to multiple naming and directory services such as LDAP, DNS, RMI, CORBA, JDBC, JMS and several other "addressing" related components or technologies in the Java stack. It separates the concerns of application development and application deployment by allowing properties to be loaded separately to specify values by using only a "name" of the variable we want to get a value for (for example "Database" could be come "jdbc:mysql://127.0.0.1:3306/?user=DBUSER&password=ABRACADABRA", or "Queue" could become "jms:sonicmq:queue://127.0.0.1:2506?destination=jms/MyApp.PUSH").


Persistence

JDBC

Java DataBase Connectivity (JDBC) is an API for providing access to a DBMS to access data and generate equivalent Object representations in Java. [442]

[447] [448] [449] [450] [451] [452] [453] [454] [455] [456] [457] [458] [459]

EJB

Enterprise Java Beans (commonly abbreviated EJB) are a set of technologies for robustly modeling modular data and transactional components of an application. Java Beans are most commonly used to define Objects for use within Web and/or Enterprise Application that provide a standard way to implement the back-end "business logic" code typically found in enterprise applications.Acting as a server-side component architecture for Java Platform, Enterprise Edition (Java EE). EJB technology enables rapid and simplified development of distributed, transactional, secure and portable applications based on Java technology.[460][461][462][463]

There are three types of Enterprise Java Beans namely:

  1. Session Beans - implements portions of application code in middleware and to simplifies access (two types: Stateless or Stateful)
  2. Entity Beans - business object in a persistent storage mechanism (i.e. Data Access Object)
  3. Message driven beans - allows J2EE applications to process messages asynchronously (acts as a JMS listener)[464]

[466] [467] [468] [469] [470]


Annotations

Annotations are syntactic expressions which enable the Java compiler (more specifically the deployer) to perform value setting and additional configurations. They are typically a combination of a keyword, entity or method name preceded by the "@" sign and possibly having some parameters denoted or attributes set via opening "(" and closing ")" parentheses, with each one separated by commas.

[471] [472]

Web Applications

Servlet

Servlet technology provides the basic level of Java functionality exposed via the web using GET, POST, UPDATE or DELETE response handlers to generate output based on a given set of inputs (such as from a "Form body" submission, via the URL as parameters or set as variables within the "Session" scope). It is the Java-equivalent of CGI in Perl.

JSP

Java Server Pages (JSP) is a framework for exposing Java code and implementing programming logic over the web via Web Applications. JSP Web Applications must be hosted in a web server or container.

JSF

Java Server Faces (JSF) are a set of libraries providing a set of modularized, reusable and customizable Web UI components for use in JSP pages. It can serve as an integration layer between Java WebApps (i.e. JSP) and client-side programming logic (i.e. JavaScript).

  • See section: JSF

JNLP

[477] [478] [479] [480] [481] [482] [483] [484] [485] [486] [487]

Batch

[488]


Graphical User Interfaces

Applets

Applets have been deprecated, but they used to be the leading RIA technonology by providing "Java in the browser"

See: Applet

Swing

[490] [491] [492] [493] [494] [495] [496] [497] [498] [499] [500] [501]

[502] [503] [504] [505] [506] [507] [508] [509] [510] [511] [512]

[513] [514] [515] [516] [517] [518] [519] [520] [521] [522] [523] [524] [525] [526] [527]

JavaFX

Recently, the Java camp has responded to Adobe's aggressive promotion of Flash as a de facto web visualization, animation, interaction and video technology with the release of JavaFX, a series of APIs that lend alot more interactivity to Java Server Pages and other existing Java web frameworks.

[528]

JMF


Frameworks

[529]

JPA

Java Persistence API (JPA) provides a POJO persistence model for object-relational mapping.

[530] [531] [532]

[537] [538] [539] [540] [541] [542] [543] [544][545][546] [547] [548] [549] [550] [551] [552] [553] [554] [555] [556] [557] [558] [559] [560] [561] [562] [563] [564] [565] [566] [567] [568] [569] [570] [571] [572] [573] [574] [575] [576] [577] [578] [579] [580] [581] [582] [583] [584] [585] [586] [587] [588] [589] [590] [591] [592] [593] [594] [595] [596] [597] [598] [599] [600]


OpenJPA

OpenJPA is a truly open source version of JPA in that it is run by the Apache community and licensed non-commercially under the terms of the Apache 2.0 Software License. It also enjoys a fairly active community but lacks the support of a single dedicated company.

[601] [602]

Hibernate

Hibernate is the leading open source implementation of JPA, and its community and the project itself is owned and operated by JBoss. While being open source it is also a commercial implementation but does not require a licensing fee for production use, only inclusion of the Hibernate libraries in your runtime (which are natively part of the JBoss application server) if not using with JBoss Application Server.[603]

See also: Hibernate

[604] [605]

IBATIS

The iBATIS project was started by Clinton Begin in 2001. Originally the focus was on the development of cryptographic software solutions. The first product to be released by iBATIS was Secrets, a personal data encryption and signing tool much like PGP. Secrets was written entirely in Java and was released under an open source license. Today the iBATIS project at Apache has retired and the project MyBatis lives on at Google Code, heavily focused on the persistence layer frameworks known as SQL Maps and Data Access Objects (DAO).[606]

EclipseLink

[608]

Cayenne

Rather than hardcoding SQL statements through Java code, Cayenne is yet another ORM that allows a programmer to work only with Java objects abstracted from the database. Its primary claim to fame is that it is Apache-licensed, non vendor locked-in and works with just about any of the major RDBMSs and features a GUI for building database abstractions, rather than depending on the developer to write out mappings by hand as annotations, .properties files, XML and/or other configuration files as is done in similar ORMs like Hibernate (JPA) or DataNucleus (JDO).


DTO

Data Transfer Object (DTO) is usually just a POJO with getters/setters to store data. By comparison, a Data Access Object (DAO) is the "persistence layer"-specific class that performs CRUD operations against whichever storage mechanism(s) the application relies on (i.e. Cache-based, File-system, DBMS, NoSQL, Graph, etc) both can be used in MVC architecture.

[609] [610] [611] [612] [613] [614]

JDO

Java Data Objects (JDO) is a standard interface-based Java model abstraction of persistence.

DataNucleus

DataNucleus Access Platform is the leading open source implementation of JDO. The latest version of Access Platform also supports JPA v2.0.[615]


CXF

Apache CXF (acronym from merger between Cetlix & Xfire Web Service Frameworks) is an open source services framework. CXF helps you build and develop services using frontend programming APIs, like JAX-WS and JAX-RS. These services can speak a variety of protocols such as SOAP, XML/HTTP, RESTful HTTP, or CORBA and work over a variety of transports such as HTTP, JMS or JBI.

[616] [617]


ROME

ROME is an set of open source Java tools for parsing, generating and publishing RSS and Atom feeds. The core ROME library depends only on the JDOM XML parser and supports parsing, generating and converting all of the popular RSS and Atom formats including RSS 0.90, RSS 0.91 Netscape, RSS 0.91 Userland, RSS 0.92, RSS 0.93, RSS 0.94, RSS 1.0, RSS 2.0, Atom 0.3, and Atom 1.0. You can parse to an RSS object model, an Atom object model or an abstract SyndFeed model that can model either family of formats.


Tools

[620] [621]

[624]


JavaDoc

JavaDocs are the standard format for documenting (commenting) your code in Java. They enable the generation of an HTML-based developer-friendly view of the classes, as well as better code-completion within your own projects.

[626] [627] [628] [629] [630] [631] [632] [633] [634] [635] [636] [637] [638] [639] [640] [641] [642] [643] [644] [645] [646] [647] [648] [649] [650] [651] [652] [653] [654] [655]

Resources

[660] [661] [662] [663] [664]


Tutorials

[677]

[678] [679] [680] [681]

[687]

[688] [689] [690] [691] [692] [693]

[696] [697] [698] [699] [700]

[712][713][714][715]

[718]


External Links

[720][721][722][723][724]

[728] [729]

[730] [731] [732] [733]

[734][735]

[737]

[738] [739] [740] [741] [742] [743]

[744] [745][746] [747] [748] [749] [750]

[751] [752]

[755] [756]

[757][758]


References

  1. TIOBE programming language index: http://www.tiobe.com/index.php/paperinfo/tpci/
  2. About.com - What is Java?: http://java.about.com/od/gettingstarted/a/whatisjava.htm
  3. Java EE 5 Patterns (SL-500-EE5): http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getCourseDesc?dc=D61858GC10&p_org_id=1001&lang=US
  4. wikipedia: Design pattern (computer science)
  5. The History of Java Technology: http://www.oracle.com/technetwork/java/javase/overview/javahistory-index-198355.html
  6. The Java™ programming language: http://www.outbacksoftware.com/java/java.html
  7. Java history: http://www.freejavaguide.com/history.html
  8. Oracle Java SE Support Roadmap: https://www.oracle.com/technetwork/java/java-se-support-roadmap.html
  9. Oracle's release cadence opens door for Java support rivals: https://www.theserverside.com/news/252484541/Oracles-release-cadence-opens-door-for-Java-support-rivals
  10. Java is still available at "zero-cost": https://blog.joda.org/2018/08/java-is-still-available-at-zero-cost.html (but only OpenJDK not the OracleJDK can be used freely in Production)
  11. Java Is Still Free: https://docs.google.com/document/d/1nFGazvrCvHMZJgFstlbzoHjpAVwv5DEdnaBr_5pKuHo/preview#heading=h.p3qt2oh5eczi | VIDEO
  12. JetBrains' 25 Things We Love About Java: https://blog.jetbrains.com/idea/2020/05/25-things-we-love-about-java/ (Java's 25th birthday celebration took place in 2020)
  13. Java Platform Evolution: https://dev.java/evolution/
  14. wikipedia: Java version history
  15. RIP Java SE 6 - A tribute to Java’s longest-serving edition (JDK6 reaches end of life, JDK7 now default): http://jaxenter.com/rip-se-6-a-tribute-to-java-s-longest-serving-edition-46262.html
  16. JDK 7 GA: http://jdk.java.net/9/
  17. Java 7 - Do we really need <?> in the diamond operator?: http://java.dzone.com/announcements/java-7-do-we-really-need
  18. Java EE 7 - Concurrency in Asynch Servlets tutorial: http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/concurrency/Concurrency.html?cid=8501&ssid=0
  19. Java EE 7 - Hello World for MAVEN 3, JAX-RS 2.0 & JSON: http://www.adam-bien.com/roller/abien/entry/hello_javaee_7_with_maven
  20. Java EE7 - Developing a Batch Processing Application: http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/BatchProcessing/BatchProcessing.html?cid=8674&ssid=0#section2
  21. ServiceLoader Dynamic Reloading on JEE7 Web Application: http://javaevangelist.blogspot.cz/2013/11/serviceloader-dynamic-reloading-on-jee7.html
  22. JDK 8 GA: http://jdk.java.net/9/
  23. Oracle sets date for end of Java 8 updates: https://www.infoworld.com/article/3269332/java/oracle-sets-date-for-end-of-java-8-updates.html
  24. Java 8 compatible Reflection, but Faster: https://dzone.com/articles/java-reflection-but-faster
  25. Java 8 multiline string example: https://blog.softhints.com/java-8-multiline-string-example/
  26. Life Beyond Java 8: https://dzone.com/articles/life-beyond-java-8
  27. Amazon Releases Corretto 8 GA - A Downstream Distribution of OpenJDK: https://www.infoq.com/news/2019/03/amazon-releases-corretto-8
  28. JDK 9 GA: http://jdk.java.net/9/
  29. Overview of JDK 9 & JRE 9 Installation: https://docs.oracle.com/javase/9/install/overview-jdk-9-and-jre-9-installation.htm#JSJIG-GUID-8677A77F-231A-40F7-98B9-1FD0B48C346A
  30. New APIs in Java 9 (.vs. Java 8): https://javaalmanac.io/jdk/9/apidiff/8/
  31. Real World Java 9 (WEBINAR): https://dzone.com/articles/real-world-java-9-webinar
  32. A hard look at the state of Java modularization: https://blog.frankel.ch/hard-look-state-java-modularization/
  33. Explicitly Naming Automatic Java Modules: https://dzone.com/articles/explicitly-naming-automatic-java-modules
  34. Java 9 - The Exciting Bits: https://dzone.com/articles/java-9-the-exciting-bits
  35. State of Valhalla: Pt.1 - Road to Valhalla | Pt.2 - Language Model | Pt.3 - VM Model
  36. Protocol Buffers -- Developer Guide: https://developers.google.com/protocol-buffers/docs/overview
  37. The Evolution of the Producer-Consumer Problem in Java: https://dzone.com/articles/the-evolution-of-producer-consumer-problem-in-java
  38. Writing High Performance Java Application in Java 9: https://coderprog.com/writing-high-performance-java-9-app/
  39. JDK 9 is the End of the Road for Some Features: https://www.javacodegeeks.com/2017/01/jdk-9-end-road-features.html
  40. Java 9 Migration Issues and Resolutions: https://www.baeldung.com/java-9-migration-issue
  41. Using external libraries in JShell: https://advancedweb.hu/using-external-libraries-in-jshell/
  42. Java 9+ modules – Java Platform Module System (JPMS) basics: https://jaxenter.com/java-9-modules-jpms-basics-135885.html
  43. JDK 10 GA: http://jdk.java.net/10/
  44. 109 New Features In JDK 10: https://www.azul.com/109-new-features-in-jdk-10/
  45. Java 10 - Spring & XML bind: http://joshlong.com/jl/blogPost/java-10.html
  46. Java 10 -- These APIs are as good as gone: https://jaxenter.com/jdk-10-apis-going-away-141439.html
  47. Java10 code examples: http://github.com/askrakesh/examples
  48. JDK 11 GA: http://jdk.java.net/11/
  49. Oracle JDK Migration Guide (from 8 to 11): https://docs.oracle.com/en/java/javase/11/migrate/index.html#JSMIG-GUID-C25E2B1D-6C24-4403-8540-CFEA875B994A
  50. Java Platform, Standard Edition 11 - Troubleshooting Guide: https://docs.oracle.com/en/java/javase/11/troubleshoot/index.html
  51. Java JDK 11 -- All the new features now available: https://www.infoworld.com/article/3265447/java/java-jdk-11-all-the-new-features-now-available.html (CORBA removed, JavaFX & JavaEE separated out to standalone projects)
  52. Missing iFrame view for Javadocs JDK 11: https://stackoverflow.com/questions/51992347/missing-iframe-view-for-javadocs-jdk-11 (framed JavaDocs are indeed discontinued, must use Search/Breadcrumbs going forward)
  53. Updates to the Java SE Platform: https://blogs.oracle.com/java/java-se-releases
  54. A Tale of Two Oracle JDKs: http://marxsoftware.blogspot.com/2018/09/a-tale-of-two-oracle-jdks.html
  55. New APIs in Java 11 (.vs. Java 8): https://javaalmanac.io/jdk/11/apidiff/8/
  56. Guide to Java Versions and Features: https://dzone.com/articles/a-guide-to-java-versions-and-features
  57. Why are companies still stuck with Java8?: https://www.marcobehler.com/guides/a-guide-to-java-versions-and-features#_why_are_companies_still_stuck_with_java_8
  58. Time to look beyond Java 8: https://blog.joda.org/2018/09/time-to-look-beyond-oracles-jdk.html
  59. 20 Reasons to Move On from Java 8 : https://dev.to/awwsmm/20-reasons-to-move-on-from-java-8-1dio
  60. Java 11 overview (VIDEOS): https://www.youtube.com/playlist?list=PLX8CzqL3ArzXyA_lJzaNmrFqpLOL4aCEz
  61. 90 New Features and APIs in JDK 11 (Part 2) : https://dzone.com/articles/90-new-features-and-apis-in-jdk-11-part-2
  62. Java 11 - Standardized HTTP Client API: https://dzone.com/articles/java-11-standardized-http-client-api
  63. Using Java Flight Recorder With OpenJDK 11: https://dzone.com/articles/using-java-flight-recorder-with-openjdk-11-1
  64. Should you adopt Java 12 or stick on Java 11? : https://blog.joda.org/2018/10/adopt-java-12-or-stick-on-11.html
  65. Java 11 Released: https://www.infoq.com/news/2018/09/java11-released
  66. Java 11 has Arrived. Is it time to panic?: https://learnprogramming.academy/programming/java-11-has-arrived-is-it-time-to-panic/
  67. Java 11 First Impressions: Are You Ready to Make the Switch?: https://land.overops.com/overops-java-11-recording/
  68. Oracle JDK 11 installer & JAR file association on Windows: https://stackoverflow.com/questions/52536971/oracle-jdk-11-installer-jar-file-association-on-windows
  69. Running JAR file on Windows: https://stackoverflow.com/questions/394616/running-jar-file-on-windows/394628
  70. Getting Ready for Java 11/JDK 11 and deprecated Java EE Modules being removed JAXB, JAX-WS, JAF, JTA, CORBA: https://crunchify.com/java-jdk-11-and-details-on-deprecated-java-ee-modules-including-jaxb-jax-ws-jaf-jta-corba/ (most will live on as separate JAR libs, available via their project website and/or Maven Central repo)
  71. API Updates in Java SE 11 (18.9) : https://dzone.com/articles/api-updates-in-java-se-11-189
  72. APIs to Be Removed From Java 11: https://dzone.com/articles/apis-to-be-removed-from-java-11
  73. It’s time! Migrating to Java 11 -- Why you should migrate to next Java now!: http://medium.com/criciumadev/its-time-migrating-to-java-11-5eb3868354f9
  74. Using Java 11 In Production -- Important Things To Know: https://blog.jetbrains.com/idea/2018/09/using-java-11-in-production-important-things-to-know/
  75. Java 11 Features: http://www.journaldev.com/24601/java-11-features
  76. New Classes in Java 11: http://blog.code-cop.org/2019/12/new-classes-in-java-11.html
  77. Java 11's String.repeat() Method in Action - Building repetitive clause in a PreparedStatement with dynamic number of Parameters: https://marxsoftware.blogspot.com/2020/12/jdk11-string-repeat-preparedstatement.html
  78. Single File Source Code With Java 11: https://dzone.com/articles/single-file-source-code-with-java-11 (bash/batch/shell scripts move over, here comes Java "single-file" directly runnable ".java" files)
  79. Getting Started With Java 11 (If You Are Still Using Java 8): https://simply-how.com/getting-started-with-java-11
  80. Migrate Maven Projects to Java 11: https://winterbe.com/posts/2018/08/29/migrate-maven-projects-to-java-11-jigsaw/https://blog.codefx.org/java/java-11-migration-guide/#Migrating-From-Java-8-To-Java-11
  81. It’s time! Migrating to Java 11: https://medium.com/criciumadev/its-time-migrating-to-java-11-5eb3868354f9
  82. Move to OpenJDK-11 but compile in Java 8: https://stackoverflow.com/questions/54147275/move-to-openjdk-11-but-compile-in-java-8
  83. What is the --release flag in the Java 9 compiler?: https://stackoverflow.com/questions/43102787/what-is-the-release-flag-in-the-java-9-compiler
  84. Java 1z0-815 (JDK11 programmer) Certification: https://education.oracle.com/java-se-11-developer/pexam_1Z0-819 PREPARE | PRACTICE | EXAM
  85. From Java 8 to Java 11 – Quick Guide: https://codete.com/blog/java-8-java-11-quick-guide/
  86. Fun with Java Backwards Compatibility: https://www.symphonious.net/2019/02/04/fun-with-java-backwards-compatibility/
  87. Java 12 -- New Features and Enhancements Developers Should Know: https://stackify.com/java-12-new-features-and-enhancements-developers-should-know/
  88. Java 12 Released with Experimental Switch Expressions and Shenandoah GC: https://www.infoq.com/news/2019/03/java12-released
  89. Upgrading from Java 8 to Java 12: https://www.infoq.com/articles/upgrading-java-8-to-12
  90. Java 12 - The Teeing Collector: https://dzone.com/articles/java-12-the-teeing-collector
  91. Variance in Java: https://dzone.com/articles/variance-in-java
  92. Busy Developers’ Guide to Java 9, 10, 11, 12, 13, and Above: https://4comprehension.com/busy-developers-guide-to-java-9-10-11-12-13-and-above/
  93. Java Records (JEP 359): https://www.vojtechruzicka.com/java-records/
  94. Java 14 Records -- An Introduction: https://alidg.me/blog/2020/1/31/java14-records
  95. Serializable Records: https://inside.java/2020/07/20/serializablerecords/
  96. Serializing Java 14 Records: https://www.javaspecialists.eu/archive/Issue276.html
  97. Fun with Java Records: https://benjiweber.co.uk/blog/2020/09/19/fun-with-java-records/ | SRC
  98. JDK 14/JEP 305 instanceof Pattern Matching "Smart Casts": httops://marxsoftware.blogspot.com/2020/02/jdk14-instanceof-pattern-matching.html
  99. Spring Tips -- Java 14 (or, Can Your Java Do This?): https://spring.io/blog/2020/03/11/spring-tips-java-14-or-can-your-java-do-this
  100. Java 14 is in Feature-Freeze and Release ramp-down: https://www.infoq.com/news/2019/12/java14-feature-freeze/
  101. Java 14 Released (2020-03-17): https://www.infoq.com/news/2020/03/java14-released/
  102. Java 15 / JDK 15: General Availability: https://mail.openjdk.java.net/pipermail/announce/2020-September/000291.html
  103. Java 15 - the Story So Far: https://www.infoq.com/news/2020/04/java-15-story-so-far/
  104. New language features (Java 8 to Java 15): https://advancedweb.hu/new-language-features-since-java-8-to-15/
  105. A categorized list of all Java and JVM features since JDK 8 to 15: https://advancedweb.hu/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-15/
  106. Java 15 -- Biased locking a goner, but better things "Loom" ahead (with Project Loom): https://www.javaspecialists.eu/archive/Issue282.html
  107. Java 15 Released: https://www.infoq.com/news/2020/09/java15-released/
  108. 67 New Features in JDK 16: https://dzone.com/articles/67-new-features-in-jdk-16
  109. Records and Pattern Matching for Instanceof Finalized in JDK 16: https://www.infoq.com/news/2020/08/java16-records-instanceof/
  110. JDK16 javac xlint Warning about Default Constructors: https://marxsoftware.blogspot.com/2020/08/jdk16-javac-xlint-warning-default-constructors.html
  111. Metaspace in OpenJDK 16: https://lkorinth.github.io/posts/2020-11-27-metaspace.html
  112. JDK 16 checking indexes & ranges of longs: https://marxsoftware.blogspot.com/2020/11/jdk16-check-long-indexes-ranges.html
  113. JDK 16 - Stream to List in one easy call: https://marxsoftware.blogspot.com/2020/12/jdk16-stream-to-list.html
  114. Going Beyond Java 8 -- Pattern Matching for instanceof in JDK 14 .vs. 16: https://dzone.com/articles/going-beyond-java-8-pattern-matching-for-instanceo
  115. What's new in JDK 16 -- Sub-milliseond Max Pause Times: https://malloc.se/blog/zgc-jdk16
  116. Looking into the JDK 16 vector API: https://www.mscharhag.com/java/vector-api
  117. What's New in Java 16: https://www.infoq.com/articles/java-16-new-features/
  118. A categorized list of all Java and JVM features since JDK 8 to 16: https://advancedweb.hu/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-16/
  119. New Features in Java 16: https://www.baeldung.com/java-16-new-features
  120. JDK 17 Script Friendly URLs: https://www.oracle.com/java/technologies/jdk-script-friendly-urls/
  121. What We Know about Java 16 and 17 So Far: https://www.infoq.com/news/2020/11/java16-so-far/
  122. Proposed schedule for JDK 17: https://mail.openjdk.java.net/pipermail/jdk-dev/2021-March/005266.html
  123. JDK 17 -- JEP 406 - Pattern Matching for switch (preview): https://openjdk.java.net/jeps/406
  124. JDK 17 -- Hexadecimal Formatting and Parsing: https://marxsoftware.blogspot.com/2020/12/jdk17-hex-formatting-parsing.html
  125. JDK 17 -- Monitoring "Deserialization events" to Improve Application Security: https://inside.java/2021/03/02/monitoring-deserialization-activity-in-the-jdk/
  126. Upgrade to Java 16 or 17: https://www.infoq.com/presentations/upgrade-java16-java17/
  127. Inside Java Newscast -- #6 - Java 17 features & development: https://www.youtube.com/watch?v=Twwpk6vub1M
  128. Internal JDK Elements Strongly Encapsulated in JDK 17: https://www.infoq.com/news/2021/06/internals-encapsulated-jdk17/
  129. Internal packages that will no longer be open by default: https://cr.openjdk.java.net/~mr/jigsaw/jdk8-packages-denied-by-default
  130. Is Java 17 a Glass Half Full? : https://www.infoq.com/news/2021/07/java-17-glass/
  131. JDK 17 rollout -- JEP Café #2 - Sealed Classes: https://inside.java/2021/07/22/jepcafe2/
  132. OpenJDK -- JEP 416 - Reimplement Core Reflection with "Method Handles": https://openjdk.java.net/jeps/416
  133. JDK 17 Security Enhancements: https://seanjmullan.org/blog/2021/09/14/jdk17
  134. The Arrival of Java 17!: https://inside.java/2021/09/14/the-arrival-of-java17/
  135. Java 17, the Next Long-Term Support Release, is Now Available : https://www.infoq.com/news/2021/09/java17-released/
  136. Java 17 released with updates to LTS schedule: https://sdtimes.com/java/java-17-released-with-updates-to-lts-schedule/
  137. Majority of Java developers plan to transition to Java 17 within the next year: https://sdtimes.com/java/report-majority-of-java-developers-plan-to-transition-to-java-17-within-the-next-year/
  138. JDK 18 & JDK 19 - What We Know So Far: https://www.infoq.com/news/2022/03/java-18-so-far/
  139. JDK 18 Release Notes: https://jdk.java.net/18/release-notes
  140. JDK 18 - The new features in Java 18: https://www.infoworld.com/article/3630510/jdk-18-the-new-features-in-java-18.html
  141. JDK 18 G1/Parallel/Serial GC changes: https://tschatzl.github.io/2022/03/14/jdk18-g1-parallel-gc-changes.html
  142. JDK 18 Security Enhancements: https://seanjmullan.org/blog/2022/03/23/jdk18
  143. All About JDK 18 - Inside Java Newscast #21: https://inside.java/2022/03/10/insidejava-newscast-021/
  144. The Arrival of Java 18!: https://inside.java/2022/03/22/the-arrival-of-java18/ | PODCAST episode
  145. Java 19 - The Best Java Release? - Inside Java Newscast #27: https://inside.java/2022/06/16/insidejava-newscast-027/
  146. The Java Language Specification, Third Edition: http://docs.oracle.com/javase/specs/jls/se5.0/html/j3TOC.html
  147. The JavaTM Virtual Machine Specification - 2nd Edition: http://docs.oracle.com/javase/specs/jvms/se5.0/html/VMSpecTOC.doc.html
  148. Working with Manifest Files - The Basics: http://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html
  149. Advanced Java Tutorial: http://www.javacodegeeks.com/2015/09/advanced-java.html
  150. Tabs vs Spaces -- How They Write Java at Google, Twitter, Mozilla and Pied Piper: https://blog.overops.com/tabs-vs-spaces-how-they-write-java-in-google-twitter-mozilla-and-pied-piper/
  151. JVM Architecture 101 -- Get to Know Your Virtual Machine: https://blog.takipi.com/jvm-architecture-101-get-to-know-your-virtual-machine/
  152. What is the JVM? Introducing the Java Virtual Machine: http://www.javaworld.com/article/3272244/what-is-the-jvm-introducing-the-java-virtual-machine.html
  153. JVM Architecture 101 -- Get to Know Your Virtual Machine: https://blog.overops.com/jvm-architecture-101-get-to-know-your-virtual-machine/
  154. 7 JVM Arguments of Highly Effective Applications: https://dzone.com/articles/7-jvm-arguments-of-highly-effective-applications-1
  155. Using jenv to select Java version on macOS: https://akrabat.com/using-jenv-to-select-java-version-on-macos/ (NOTE: can be done at the "local" i.e. current Terminal CLI window/prompt, or, "global" to change the default JVM for the entire OS and all applications)
  156. How to fix java.lang.UnsupportedClassVersionError: Unsupported major.minor version: https://stackoverflow.com/questions/10382929/how-to-fix-java-lang-unsupportedclassversionerror-unsupported-major-minor-versi
  157. https://stackoverflow.com/questions/1906445/what-is-the-difference-between-jdk-and-jre
  158. Setup Java on Linux sample script: https://gist.github.com/sdmcraft/2c5abbdeccf37e1642e5
  159. JDK 10: http://jdk.java.net/10/
  160. JDK 11: http://jdk.java.net/11/
  161. Building Java 10+ projects on Travis CI: https://www.deps.co/guides/travis-ci-latest-java/
  162. Most commonly available JDKs: https://blog.frankel.ch/common-jdks/
  163. Moving the JDK to a Two Year LTS Cadence: https://blogs.oracle.com/java/post/moving-the-jdk-to-a-two-year-lts-cadence
  164. Oracle's March 2018 Java Client Roadmap Update: https://www.oracle.com/technetwork/java/javase/javaclientroadmapupdate2018mar-4414431.pdf
  165. Amazon Corretto 8: https://dzone.com/articles/amazon-corretto-8-1 (Amazon distribution of the OpenJDK)
  166. Amazon Corretto -- Another OpenJDK (and how to use it): https://dzone.com/articles/amazon-corretto-another-jdk
  167. SAP builds its own Java distribution: https://www.techworld.com.au/article/658340/sap-builds-its-own-java-distribution/
  168. OpenJDK vs OracleJDK — which one to use when: https://medium.com/@sairamkrish/openjdk-vs-oraclejdk-which-one-to-use-when-936ae5315600
  169. Eliminating Java Update Confusion: https://dzone.com/articles/eliminating-java-update-confusion
  170. OpenJDK vs. OracleJDK - which are you using?: https://www.reddit.com/r/java/comments/6g86p9/openjdk_vs_oraclejdk_which_are_you_using/
  171. OracleJDK .vs. OpenJDK and Java JDK Development Process: https://javapapers.com/java/oracle-jdk-vs-openjdk-and-java-jdk-development-process/
  172. Differences between Oracle JDK and OpenJDK: https://stackoverflow.com/questions/22358071/differences-between-oracle-jdk-and-openjdk
  173. OpenJDK - Oracle is better?: https://askubuntu.com/questions/437752/openjdk-oracle-is-better
  174. Technically what is the main difference between Oracle JDK and OpenJDK?: https://stackoverflow.com/questions/17360011/technically-what-is-the-main-difference-between-oracle-jdk-and-openjdk
  175. What is the difference between Oracle JDK and Open JDK?: https://www.quora.com/What-is-the-difference-between-Oracle-JDK-and-Open-JDK
  176. Is there any advantage of installing OpenJDK instead of Oracle Java Platform, Standard Edition on Ubuntu?: https://www.quora.com/Is-there-any-advantage-of-installing-OpenJDK-instead-of-Oracle-Java-Platform-Standard-Edition-on-Ubuntu
  177. Return of the "OpenJDK Developers' guide": https://www.infoq.com/news/2020/07/openjdk-dev-guide/
  178. Microsoft Introduces Microsoft Build of OpenJDK: https://www.infoq.com/news/2021/04/microsoft-build-of-openjdk/
  179. "package-info.java" example: https://alvinalexander.com/java/jwarehouse/openjdk-8/langtools/src/share/classes/com/sun/javadoc/package-info.java.shtml
  180. The package-info.java File: https://www.baeldung.com/java-package-info
  181. javadoc - The Java API Documentation Generator: https://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javadoc.html
  182. Where to put java package-level information to use by javadoc?: https://stackoverflow.com/questions/12898270/where-to-put-java-package-level-information-to-use-by-javadoc
  183. What’s package-info.java for?: https://www.intertech.com/Blog/whats-package-info-java-for/
  184. Why is package-info.java useful?: https://stackoverflow.com/questions/22095487/why-is-package-info-java-useful
  185. W3schools -- Packages: https://www.w3schools.com/java/java_packages.asp
  186. Intro to the Java SecurityManager: https://www.baeldung.com/java-security-manager
  187. Retrieving a Class Name in Java: https://www.baeldung.com/java-class-name
  188. What is the difference between canonical name, simple name and class name in Java Class?:https://stackoverflow.com/questions/15202997/what-is-the-difference-between-canonical-name-simple-name-and-class-name-in-jav
  189. Core Java, Volume II -- Advanced Features, by Cay S. Horstmann (BOOK): https://www.oreilly.com/library/view/core-java-volume/9780135167175/ | Ch.9 - Java Platform Module System
  190. Java Modules: http://tutorials.jenkov.com/java/modules.html
  191. Understanding Java 9 Modules: https://www.oracle.com/corporate/features/understanding-java-9-modules.html
  192. Code-First Java Module System Tutorial: https://blog.codefx.org/java/java-module-system-tutorial/
  193. "module-info.java" tutorial: http://tutorials.jenkov.com/java/modules.html
  194. Java Magazine -- "More Java 9" (Sep/Oct 2017): http://www.javamagazine.mozaicreader.com/SeptOct2017#&pageSet=23&page=0&contentItem=0
  195. JDK 9 New Features -- Java Module System - Project Jigsaw: https://www3.ntu.edu.sg/home/ehchua/programming/java/JDK9_NewFeatures.html
  196. Getting Started with Java 9 Module System: https://www.jetbrains.com/help/idea/getting-started-with-java-9-module-system.html
  197. Gradle -- Building Java 9 Modules: https://guides.gradle.org/building-java-9-modules/
  198. Java 9 Modularity -- Patterns and Practices for Developing Maintainable Applications (September 2017): http://shop.oreilly.com/product/0636920049494.do
  199. Java 9 Modules (Part 1) -- Introduction: https://dzone.com/articles/java-9-modules-introduction-part-1
  200. Java 9 Modules (Part 2) -- IntelliJ and Maven: https://dzone.com/articles/java-9-modules-part-2-intellij-and-maven
  201. Java 9 Modules (Part 3) -- Directives: https://dzone.com/articles/java-9-modules-part-3-directives
  202. Java 9 Modules Tutorial: https://examples.javacodegeeks.com/core-java/java-9-modules-tutorial/
  203. Java 9: Step by Step From Zero to Modules (Part 1): https://dzone.com/articles/java-9-tutorial-step-by-step-from-zero-to-modules
  204. Java 9 New Features: https://www.baeldung.com/new-java-9 (incldes a simple Modules example)
  205. Migrating the ServiceLoader to the Java 9 module system: https://blog.frankel.ch/migrating-serviceloader-java-9-module-system/
  206. The State of the Module System: http://openjdk.java.net/projects/jigsaw/spec/sotms/
  207. Modules all the way down -- OSGi and the Java Platform Module System: https://www.slideshare.net/TimEllison/modules-all-the-way-down-osgi-and-the-java-platform-module-system
  208. What "Modules" are about: https://inside.java/2021/09/10/what-are-modules-about/
  209. Packaging Programs in JAR Files: http://docs.oracle.com/javase/tutorial/deployment/jar/index.html
  210. wikipedia: JAR (file format)
  211. What is a JAR file?: http://www.roseindia.net/java/example/java/util/JarFile.shtml
  212. http://thinkitdifferently.wordpress.com/2009/02/18/jar-classpath/
  213. How to run a JAR file: http://www.wikihow.com/Run-a-.Jar-Java-File
  214. 5 things you should know about JARs (in Java 6+): http://www.ibm.com/developerworks/library/j-5things6/
  215. Oracle Lesson -- Packaging Programs in JAR Files: https://docs.oracle.com/javase/tutorial/deployment/jar/
  216. Viewing Contents of a JAR File: https://www.baeldung.com/java-view-jar-contents
  217. Minimizing the risk of using Java (on the web): https://www.dionach.com/blog/minimising-the-risk-of-using-java
  218. The Java Javascript Engine: https://www.algosome.com/articles/java-javascript-engine.html
  219. wikipedia: IcedTea
  220. Move over Java Web Start — raise your glass to IcedTea-Web V1.8.1!: https://medium.com/adoptopenjdk/move-over-java-web-start-raise-your-glass-to-icedtea-web-v1-8-1-c0395e9f27
  221. How to get IcedTea browser plugin (OpenJDK browser java plugin) for windows?: https://stackoverflow.com/questions/53648281/how-to-get-icedtea-browser-plugin-openjdk-browser-java-plugin-for-windows
  222. Migration Guide from OracleJDK to OpenJDK (see section on associated Java Desktop alternatives): https://adoptopenjdk.net/migration.html
  223. Leadership of OpenJDK 8 and OpenJDK 11 Transitions to Red Hat: https://www.redhat.com/en/about/press-releases/leadership-openjdk-8-and-openjdk-11-transitions-red-hat
  224. Ask Slashdot -- How Dead Is Java?: https://developers.slashdot.org/story/19/02/02/1545215/ask-slashdot-how-dead-is-java
  225. “Minecraft has opened up Java to a range of people who probably don’t even realise the skills they have acquired through it”: https://jaxenter.com/minecraft-java-little-interview-154978.html
  226. Minecraft wiki -- Setting up a server: https://minecraft.gamepedia.com/Tutorials/Setting_up_a_server
  227. Setting up a fresh Minecraft server installation on Linux: http://matthewekenstedt.com/187-07/setting-up-a-fresh-minecraft-server-installation-on-linux/
  228. wikipedia: WAR file format (Sun)
  229. EAR packaging: http://docs.oracle.com/javaee/1.4/tutorial/doc/Overview5.html
  230. wikipedia: EAR (file format)
  231. Difference between ear, jar, and war files : http://www.java-tips.org/java-ee-tips/enterprise-java-beans/difference-between-ear-jar-and-war.html
  232. wikipedia: Classpath (Java)
  233. How to Tune Java Garbage Collection: http://java.dzone.com/articles/how-tune-java-garbage
  234. 5 Coding Hacks to Reduce GC Overhead: http://java.dzone.com/articles/5-coding-hacks-reduce-gc
  235. 5 ways to force Java garbage collection: https://www.theserverside.com/video/5-ways-to-force-Java-garbage-collection
  236. Jackson Deserialization Vulnerability: https://snyk.io/blog/jackson-deserialization-vulnerability/
  237. Changing a field's type in recent JDKs: https://blog.frankel.ch/changing-field-type-recent-jdks/
  238. How to Read a File in Java: https://www.baeldung.com/reading-file-in-java
  239. How to read file in Java with NIO – BufferedReader: https://mkyong.com/java/how-to-read-file-from-java-bufferedreader-example/
  240. Java 8 Stream – Read a file line by line: https://mkyong.com/java8/java-8-stream-read-a-file-line-by-line/
  241. Java Streams overview: https://dzone.com/articles/java-streams-overview-part-i
  242. Java – Read a file from resources folder: https://mkyong.com/java/java-read-a-file-from-resources-folder
  243. Java – Read File to String: https://howtodoinjava.com/java/io/java-read-file-to-string-examples/
  244. Java – How to read a file: https://mkyong.com/java/java-how-to-read-a-file/
  245. How to read and write Java object to a file: https://mkyong.com/java/how-to-read-and-write-java-object-to-a-file/
  246. How to read all files in a folder from Java?: http://stackoverflow.com/questions/1844688/how-to-read-all-files-in-a-folder-from-java/23814217
  247. Java – Write to File: http://howtodoinjava.com/java/io/java-write-to-file/
  248. How to write to file in Java – BufferedWriter: https://mkyong.com/java/how-to-write-to-file-in-java-bufferedwriter-example/
  249. Java – How to save a String to a File: https://mkyong.com/java/java-how-to-save-a-string-to-a-file/
  250. Java BufferedWriter class: https://www.javatpoint.com/java-bufferedwriter-class
  251. Java – How to create and write to a file: https://mkyong.com/java/java-how-to-create-and-write-to-a-file/
  252. JSoup -- Load a Document from a File: https://jsoup.org/cookbook/input/load-document-from-file
  253. Convert InputStream to BufferedReader: https://stackoverflow.com/questions/5200187/convert-inputstream-to-bufferedreader
  254. How to get an InputStream from a BufferedImage?: https://stackoverflow.com/questions/649186/how-to-get-an-inputstream-from-a-bufferedimage
  255. How to save a BufferedImage as a File: https://stackoverflow.com/questions/12674064/how-to-save-a-bufferedimage-as-a-file
  256. How to convert Byte Array to Image in java?: https://www.tutorialspoint.com/How-to-convert-Byte-Array-to-Image-in-java
  257. JavaDocs -- Serializable: https://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html
  258. What is object serialization?: https://stackoverflow.com/questions/447898/what-is-object-serialization
  259. Serialization and Deserialization in Java with Example: https://www.geeksforgeeks.org/serialization-in-java/
  260. Java object serialization - Tutorial: https://www.vogella.com/tutorials/JavaSerialization/article.html
  261. Java - Serialization: https://www.tutorialspoint.com/java/java_serialization.htm
  262. Serializing an Object via a Client/Server Connection: https://www.developer.com/design/serializing-an-object-via-a-client-server-connection/
  263. InsideJava -- Episode 16 “Let's Discuss JDK and Networking” with Michael McMahon & Daniel Fuchs: https://inside.java/2021/04/12/podcast-016/ (JDK 11+ new HTTPClient)
  264. Networking I/O with Virtual Threads - Under the hood: https://inside.java/2021/05/10/networking-io-with-virtual-threads/
  265. Java – How to convert Bytes to Hex: http://www.mkyong.com/java/java-how-to-convert-bytes-to-hex/
  266. Don’t Extract Everything Into a Method: https://dzone.com/articles/dont-extract-everything-into-a-method
  267. A Guide to the Static Keyword in Java: https://www.baeldung.com/java-static
  268. Concurrency: http://java.sun.com/docs/books/tutorial/essential/concurrency/
  269. A Bird’s-Eye View on Java Concurrency Frameworks: https://dzone.com/articles/a-birds-eye-view-on-java-concurrency-frameworks-1 (RxJava, Akka, Disruptor, and ExecutorService)
  270. What Every Java Developer Should Know About Thread, Runnable, and Thread Poolhttps://dzone.com/articles/what-every-java-dev-should-know-thread-runnable-thread-pool
  271. Java Thread example: https://www.journaldev.com/1016/java-thread-example
  272. Thread Life Cycle in Java – Thread States in Java: https://www.journaldev.com/1044/thread-life-cycle-in-java-thread-states-in-java
  273. Multithreading in Java: https://www.journaldev.com/1079/multithreading-in-java
  274. Common Concurrency Pitfalls in Java: https://www.baeldung.com/java-common-concurrency-pitfalls
  275. Java - Thread Synchronization: https://www.tutorialspoint.com/java/java_thread_synchronization.htm
  276. Java.lang.Thread.sleep() Method: https://www.tutorialspoint.com/java/lang/thread_sleep_millis.htm
  277. How can we stop a thread in Java?: https://www.tutorialspoint.com/how-can-we-stop-a-thread-in-java
  278. Java Timer, TimerTask, Reminder Class Tutorial with Example: https://crunchify.com/java-timer-and-timertask-reminder-class-tutorials-example/
  279. Java Multithreading - Threadsafe Counter: https://stackoverflow.com/questions/29883719/java-multithreading-threadsafe-counter
  280. Create a counter that increments once a second until a given number of seconds is reached : https://coderanch.com/t/557749/java/Create-counter-increments-number-seconds
  281. Using wait/notify vs Thread.sleep() in Java: https://www.qat.com/using-waitnotify-instead-thread-sleep-java/
  282. Five Ways to Update Fields in a Thread Safe Way - Part 1: https://dzone.com/articles/5-ways-to-thread-safe-update-a-field-in-java
  283. How to Run Multiple Threads Concurrently in Java? ExecutorService Approach: https://crunchify.com/how-to-run-multiple-threads-concurrently-in-java-executorservice-approach/
  284. Introducing Threads in Socket Programming in Java: https://www.geeksforgeeks.org/introducing-threads-socket-programming-java/ (client-server example designed for handling multiple simultaneous clients)
  285. Timer in Java Thread: https://stackoverflow.com/questions/11707066/timer-in-java-thread
  286. Java concurrency (multi-threading) - tutorial: https://www.vogella.com/tutorials/JavaConcurrency/article.html
  287. Java Multithreading & Concurrency Interview Questions and Answers: https://www.journaldev.com/1162/java-multithreading-concurrency-interview-questions-answers
  288. ThreadPoolExecutor – Java Thread Pool Example: https://www.journaldev.com/1069/threadpoolexecutor-java-thread-pool-example-executorservice
  289. Using Thread Dumps: https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/using_threaddumps.html
  290. TutorialsPoint -- Java RMI - Quick Guide: https://www.tutorialspoint.com/java_rmi/java_rmi_quick_guide.htm
  291. Remote Method Invocation in Java: https://www.geeksforgeeks.org/remote-method-invocation-in-java/
  292. Remote Method Invocation (RMI) overview: https://www.javatpoint.com/RMI
  293. Java RMI basic tutorial: https://www.knowledgehut.com/tutorials/java-tutorial/java-rmi
  294. JDK 7, Getting Started Using Java™ RMI (HelloWorld client/server example): https://docs.oracle.com/javase/7/docs/technotes/guides/rmi/hello/hello-world.html
  295. wikipedia: Common_Object_Request_Broker_Architecture
  296. CORBA is dead?!: http://www.linux-mag.com/id/1601/ (hardly dead, but falling out of use as the first "go-to strategy" for application integration in favour of SOA, APIs, etc)
  297. Are CORBA and RMI "dead"?: https://community.oracle.com/thread/1182073
  298. Is CORBA still alive? What about ACE?: https://groups.google.com/forum/#!topic/comp.object.corba/jD6KpFPxWPw
  299. The significance of Java RMI (and CORBA) please?: https://stackoverflow.com/questions/14326901/the-significance-of-java-rmi-please
  300. Is CORBA legacy?: https://stackoverflow.com/questions/1226050/is-corba-legacy
  301. Time Synchronization in Distributed Systems: https://medium.com/distributed-knowledge/time-synchronization-in-distributed-systems-a21808928bc8
  302. Synchronizing clients with a server and with each other (in Distributed Applications): https://gamedev.stackexchange.com/questions/552/synchronizing-clients-with-a-server-and-with-each-other
  303. Guide to JNI (Java Native Interface): https://www.baeldung.com/jni
  304. Call a C function from Java: https://stackoverflow.com/questions/5963266/call-c-function-from-java
  305. Does Java 18 finally have a better alternative to JNI?: https://developer.okta.com/blog/2022/04/08/state-of-ffi-java
  306. Object-Oriented Programming: http://cs.smu.ca/~porter/csc/465/notes/oop.html
  307. OOP Basics: http://www.jamesbooth.com/OOPBasics.htm
  308. Inheritance, Polymorphism, and Abstract Classes: http://math.hws.edu/javanotes/c5/s5.html
  309. Oracle docs -- Java OOP - Declaring Member Variables: https://docs.oracle.com/javase/tutorial/java/javaOO/variables.html
  310. In Java, what’s the difference between method overloading and method overriding?: http://www.programmerinterview.com/index.php/java-questions/method-overriding-vs-overloading/
  311. wikipedia: Abstraction
  312. wikipedia: Inheritance (object-oriented programming)
  313. What Is Inheritance?: http://java.about.com/od/objectorientedprogramming/a/inheritance.htm
  314. Inheritance .vs. Composition: http://www.javaworld.com/jw-11-1998/jw-11-techniques.html
  315. wikipedia: Polymorphism (computer science)
  316. wikipedia: Polymorphism in object-oriented programming
  317. How my Dog learned Polymorphism: http://www.javaranch.com/campfire/StoryPoly.jsp
  318. What is polymorphism in Java? Method overloading or overriding?: http://javarevisited.blogspot.com/2011/08/what-is-polymorphism-in-java-example.html#ixzz2JU2kkhIG: http://javarevisited.blogspot.ca/2011/08/what-is-polymorphism-in-java-example.html
  319. How should I have explained the difference between an Interface and an Abstract class?: https://stackoverflow.com/questions/18777989/how-should-i-have-explained-the-difference-between-an-interface-and-an-abstract
  320. What is the point of having every service class have an interface?: https://softwareengineering.stackexchange.com/questions/150045/what-is-the-point-of-having-every-service-class-have-an-interface
  321. Time To Really Learn Generics -- A Java 8 Perspective: http://nofluffjuststuff.com/magazine/2016/09/time_to_really_learn_generics_a_java_8_perspective
  322. Learning Java, 4th Edition (2013) -- Ch.8 Generics - Generic Methods: http://www.oreilly.com/library/view/learning-java-4th/9781449372477/ch08s09.html
  323. Java Generic Methods: http://tutorials.jenkov.com/java-generics/methods.html
  324. Get Started with Java: https://www.baeldung.com/get-started-with-java-series
  325. OCP Certification – Advanced Java Class Design: https://www.baeldung.com/java-ocp-advanced-class-design
  326. Java - Use polymorphism or bounded type parameters: http://softwareengineering.stackexchange.com/questions/227918/java-use-polymorphism-or-bounded-type-parameters
  327. Jackson, XML & JSON parsing library -- ObjectMapper.java: https://github.com/FasterXML/jackson-databind/blob/master/src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java (uses generics to dynamically map passed in data to corresponding Getter/Setter methods in bakcing Beans/Models)
  328. Generic Constructors in Java: https://www.baeldung.com/java-generic-constructors
  329. Working With Java 8 Optionals: http://codingjunkie.net/working-with-java8-optionals/
  330. Tired of Null Pointer Exceptions? Consider Using Java SE 8's Optional: http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html
  331. Should Java 8 getters return nullable optional Optional type? https://stackoverflow.com/questions/26327957/should-java-8-getters-return-optional-type/26328555#26328555
  332. How to Write Better Code with Java 8’s Optional: https://medium.com/swlh/how-to-write-better-code-with-java-8s-optional-b6d862f28862
  333. Working on Null Elegantly with Java Optional: https://medium.com/faun/working-on-null-elegantly-with-java-optional-62f5e65869c5
  334. How to use Optionals In Java: https://dzone.com/articles/optional-in-java
  335. 26 Reasons Why Using Optional Correctly Is Not Optional: https://dzone.com/articles/using-optional-correctly-is-not-optional
  336. Guide To Optional (available in Java 8+): https://www.baeldung.com/java-optional
  337. Java 8 Optional - Replace your get() calls: https://reversecoding.net/java-8-optional-replace-get-examples/
  338. What's the difference between Objects.requireNonNullElse() and Optional.ofNullable().orElse() methods?: https://stackoverflow.com/questions/46519014/whats-the-difference-between-objects-requirenonnullelse-and-optional-ofnullab
  339. Java's Optional Does Not Supplant All Traditional if-null-else or if-not-null-else Checks: https://marxsoftware.blogspot.com/2021/09/java-optional-vs-traditional-null.html
  340. How Java Optional Evolved Over Time: https://dzone.com/articles/java-optional-api-evolution
  341. var keyword in Java: https://www.codejava.net/java-core/the-java-language/var-keyword-in-java
  342. "var" keyword in Java - examples: https://www.geeksforgeeks.org/var-keyword-in-java/
  343. Java 11 Local Variable Syntax for Lambda Parameters: https://www.baeldung.com/java-var-lambda-params
  344. Collections in Java (overview): https://www.javatpoint.com/collections-in-java
  345. Java Sort a List by multiple attributes example: https://www.codejava.net/java-core/collections/sorting-a-list-by-multiple-attributes-example
  346. Eclipse Collections 11.0.0 Features New APIs and Functionality: https://www.infoq.com/news/2022/02/eclipse-collections-11-0-0/
  347. Java language basics: http://developer.ibm.com/tutorials/j-introtojava1/ (good examples of List, ArrayLists, etc)
  348. Finding the Differences Between Two Lists in Java: https://www.baeldung.com/java-lists-difference
  349. How to compare two ArrayLists in Java: https://howtodoinjava.com/java/collections/arraylist/compare-two-arraylists/ (equality check, contains specific items, find additional items, missing items, common items)
  350. Java – Check if Array contains a certain value?: https://www.mkyong.com/java/java-check-if-array-contains-a-certain-value/
  351. How to iterate through a Map in Java?: https://stackoverflow.com/questions/43015098/how-to-iterate-through-a-map-in-java
  352. How to get Map’s key from value in Java: https://www.techiedelight.com/get-map-key-from-value-java/
  353. 10 Examples of HashMap in Java - Programming Tutorial: http://www.java67.com/2013/02/10-examples-of-hashmap-in-java-programming-tutorial.html
  354. Cannot cast from Map<String,Object> to Map<String,List<Map<String,String>>>: https://stackoverflow.com/questions/13382361/cannot-cast-from-mapstring-object-to-mapstring-listmapstring-string
  355. want to create a map<String , Object> ,Object can be String and can be class Object: https://stackoverflow.com/questions/6870973/want-to-create-a-mapstring-object-object-can-be-string-and-can-be-class-obj
  356. List<SomeObject> to Map<Integer, SomeObject> (where Map has a numerical Key and the original Object): https://www.baeldung.com/java-list-to-map
  357. List<String> to Map<String, Object> with Key Mapper and Value Mapper: https://www.concretepage.com/java/jdk-8/java-8-convert-list-to-map-using-collectors-tomap-example
  358. Java 8 Streams peek() API: https://www.baeldung.com/java-streams-peek-api
  359. An Introduction to Functional Programming in Java 8 (Part 3) -- Streams: http://dzone.com/articles/an-introduction-to-functional-programming-in-java
  360. Java 8 Stream -- concat, count, sorted and distinct Example: https://www.concretepage.com/java/jdk-8/java-8-stream-concat-count-sorted-distinct-example
  361. Null safe date comparator for sorting in Java 8 Stream: https://stackoverflow.com/questions/36361156/null-safe-date-comparator-for-sorting-in-java-8-stream
  362. Java performance tutorial – How fast are the Java 8 streams?: https://jaxenter.com/java-performance-tutorial-how-fast-are-the-java-8-streams-118830.html
  363. How to Properly Debug Java Streams: https://dzone.com/articles/how-to-properly-debug-java-streams-video
  364. How to debug stream().map(…) with lambda expressions?: https://stackoverflow.com/questions/24541786/how-to-debug-stream-map-with-lambda-expressions
  365. IntelliJ -- Analyze Java Stream operations: https://www.jetbrains.com/help/idea/analyze-java-stream-operations.html
  366. How to debug Java 8 Stream Pipeline - peek() method tutorial: http://www.java67.com/2016/09/java-8-streampeek-example.html
  367. Stream.reduce & Stream.collect methods: https://docs.oracle.com/javase/tutorial/collections/streams/reduction.html
  368. How do I determine whether an array contains a particular value in Java?: https://stackoverflow.com/questions/1128723/how-do-i-determine-whether-an-array-contains-a-particular-value-in-java
  369. Java Stream API was Broken Before JDK10: https://4comprehension.com/java-stream-api-was-broken-before-jdk10/
  370. Java 8 Streams -- An Intro to Filter, Map and Reduce Operations: www.sitepoint.com/java-8-streams-filter-map-reduce/
  371. Java Stream collect() method Examples: https://www.journaldev.com/32457/java-stream-collect-method-examples
  372. How can I get a List from some class properties with Java 8 Stream?: https://stackoverflow.com/questions/30611870/how-can-i-get-a-list-from-some-class-properties-with-java-8-stream
  373. 10 Examples of forEach() method in Java 8: http://www.java67.com/2016/01/how-to-use-foreach-method-in-java-8-examples.html
  374. Java 8 Friday -- 10 Subtle Mistakes When Using the Streams API: https://blog.jooq.org/2014/06/13/java-8-friday-10-subtle-mistakes-when-using-the-streams-api/
  375. String Operations with Java Streams: https://www.baeldung.com/java-stream-operations-on-strings
  376. How to Iterate Over a Stream with Indices: http://www.baeldung.com/java-stream-indices
  377. Java 8 -- Accumulate the elements of a Stream using Collectors: http://www.deadcoderising.com/2017-02-21-java-8-accumulate-your-streams-using-collectors/
  378. A Guide to Streams in Java 8 -- In-Depth Tutorial with Examples: http://stackify.com/streams-guide-java-8/
  379. Java Streams Overview, Part I: https://dzone.com/articles/java-streams-overview-part-i
  380. How to convert a Map to List in Java?: https://stackoverflow.com/questions/1026723/how-to-convert-a-map-to-list-in-java
  381. Java 8 - How to convert String to Map<String,String>?: https://stackoverflow.com/questions/52695410/java-8-how-to-convert-string-to-mapstring-string
  382. Java 8 - Convert Map to List using Collectors.toList() Example: https://www.concretepage.com/java/jdk-8/java-8-convert-map-to-list-using-collectors-tolist-example
  383. Convert a List to a Comma-Separated String in Java 8: https://dzone.com/articles/java-8-convert-list-to-string-comma-separated
  384. Check if one List object contains element from the other: https://stackoverflow.com/questions/11796371/check-if-one-list-contains-element-from-the-other
  385. Java 8 – How to sort list with stream.sorted(): https://mkyong.com/java8/java-8-how-to-sort-list-with-stream-sorted/
  386. Processing Files With Java 8 Streams: https://reflectoring.io/processing-files-using-java-8-streams/
  387. Exception Handling in Java Streams: https://dzone.com/articles/exception-handling-in-java-streams (when you want to use a method that throws a checkedException, you have to do something extra if you want to call it in a lambda)
  388. Think Twice Before Using Java 8 Parallel Streams: https://dzone.com/articles/think-twice-using-java-8
  389. Guide to mapMulti in Stream API: https://www.baeldung.com/java-mapmulti (with real-world Artist' to Album association examples)
  390. A real-world (ShoppingCart) example of a Stream Collector: https://blog.frankel.ch/real-world-stream-collector/
  391. How to Properly Debug Java Streams (VIDEO): https://dzone.com/articles/how-to-properly-debug-java-streams-video
  392. wikipedia: Anonymous function
  393. Core Java Volume I — Fundamentals, 11th ed. by Cay S. Horstmann (BOOK): https://www.oreilly.com/library/view/core-java-volume/9780135167199/ | Ch.6-Interfaces, Lambda Expressions & Inner Classes
  394. Start Using Java Lambda Expressions & Streams: https://www.developer.com/java/start-using-java-lambda-expressions.html
  395. How to start working with Lambda Expressions in Java: https://www.freecodecamp.org/news/learn-these-4-things-and-working-with-lambda-expressions-b0ab36e0fffc/
  396. Java 8 – Powerful Comparison with Lambdas | VIDEOS: https://www.baeldung.com/java-8-sort-lambda
  397. Why the restriction on local variable capture?: http://www.lambdafaq.org/what-are-the-reasons-for-the-restriction-to-effective-immutability/
  398. Java local vs instance variable access speed: https://stackoverflow.com/questions/21613098/java-local-vs-instance-variable-access-speed
  399. Why are lambda expressions being added to Java?: http://www.lambdafaq.org/why-are-lambda-expressions-being-added-to-java/
  400. Why do java 8 lambdas allow access to non-final class variables?: https://stackoverflow.com/questions/29029849/why-do-java-8-lambdas-allow-access-to-non-final-class-variables
  401. Modifying local variable from inside lambda: https://stackoverflow.com/questions/30026824/modifying-local-variable-from-inside-lambda
  402. Java 8 – Powerful Comparison with Lambdas: http://www.baeldung.com/java-8-sort-lambda
  403. Streams tutorial: https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/
  404. Lambda Expressions and Functional Interfaces -- Tips and Best Practices: https://www.baeldung.com/java-8-lambda-expressions-tips
  405. Introduction To Pragmatic Functional Java (and how to refactor from traditional imperative coding style): https://dzone.com/articles/introduction-to-pragmatic-functional-java
  406. An Introduction to Atomic Variables in Java: https://www.baeldung.com/java-atomic-variables
  407. How AtomicReference Works: https://dzone.com/articles/atomicreference
  408. Java AtomicReference Example: https://examples.javacodegeeks.com/core-java/util/concurrent/atomic/atomicreference/java-atomicreference-example/
  409. AtomicReference tutorial: http://tutorials.jenkov.com/java-util-concurrent/atomicreference.html
  410. Java Lambda Expressions: http://tutorials.jenkov.com/java/lambda-expressions.html
  411. How do you assign a lambda to a variable in Java 8?: https://stackoverflow.com/questions/21920039/how-do-you-assign-a-lambda-to-a-variable-in-java-8
  412. How to convert a String to a lambda expression?: https://stackoverflow.com/questions/22207447/how-to-convert-a-string-to-a-lambda-expression
  413. Java Lambda Expressions Basics: https://dzone.com/articles/java-lambda-expressions-basics
  414. Hacking Lambda Expressions in Java: https://dzone.com/articles/hacking-lambda-expressions-in-java
  415. lambdaFromString lib: https://github.com/greenjoe/lambdaFromString
  416. Lambda Expressions in Java 8: https://www.geeksforgeeks.org/lambda-expressions-java-8/
  417. Java Lambda Expressions: https://www.programiz.com/java-programming/lambda-expression
  418. Java 8 Lambda Limitations -- Closures: http://dzone.com/articles/java-8-lambas-limitations-closures
  419. Lambda Expressions & Functional Interfaces -- Tips & Best Practices: http://www.baeldung.com/java-8-lambda-expressions-tips
  420. Java Lambda Expressions: http://tutorials.jenkov.com/java/lambda-expressions.html
  421. Modifying local variable from inside lambda: stackoverflow.com/questions/30026824/modifying-local-variable-from-inside-lambda/53350417#53350417
  422. Using Java 8 Lambdas Efficiently: http://www.beyondjava.net/using-java-8-lambdas-efficiently
  423. Exception Handling in Java Streams: https://medium.com/swlh/exception-handling-in-java-streams-5947e48f671c
  424. How to catch splitted String in Java Stream: https://stackoverflow.com/questions/29807947/how-to-catch-splitted-string-in-java-stream
  425. How to convert comma-separated String to List?: https://stackoverflow.com/questions/7488643/how-to-convert-comma-separated-string-to-list
  426. Java 8+ – Convert Stream to List: https://howtodoinjava.com/java8/convert-stream-to-list/
  427. How to convert a Stream into a Map in Java: https://www.geeksforgeeks.org/how-to-convert-a-stream-into-a-map-in-java/
  428. HashMap using Streams & substring: https://stackoverflow.com/questions/52137069/hashmap-using-streams-and-substring
  429. Java 8+ – Join or append stream of strings: https://howtodoinjava.com/java8/join-stream-of-strings/
  430. JDK 8 JavaDocs -- Stream - Collectors: https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html
  431. Oracle technical articles -- Processing Data with Java SE 8 Streams - Part 1: https://www.oracle.com/technical-resources/articles/java/ma14-java-se-8-streams.html
  432. Oracle technical articles -- Processing Data with Java SE 8 Streams - Part 2: https://www.oracle.com/technical-resources/articles/java/architect-streams-pt2.html
  433. Java streams - "filter" in a lambda: https://www.baeldung.com/java-stream-filter-lambda
  434. Java "CompletableFuture" Tutorial with Examples: https://www.callicoder.com/java-8-completablefuture-tutorial/
  435. Writing Functional Interfaces in Java: https://dzone.com/articles/writing-functional-interfaces
  436. Lambda Expressions: https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html#approach8
  437. Java Records vs. Lombok: https://dzone.com/articles/records-vs-lombok
  438. Introduction to Records: https://www.logicbig.com/tutorials/core-java-tutorial/java-16-changes/intro-to-java-records.html
  439. Java "record" - practical use-case examples: https://jenkov.com/tutorials/java/record.html
  440. A look into what you can and cannot do in Java record classes: https://dzone.com/articles/what-are-java-records
  441. wikipedia: Java Management Extensions
  442. wikipedia: Java Database Connectivity
  443. JDBC CRUD ( Create, Read, Update and Delete) example: http;//techmyguru.com/JDBC/index.php?section=5
  444. MySQL and Java JDBC - Tutorial: http://www.vogella.com/articles/MySQLJava/article.html
  445. An Introduction to JDBC, Part 3: http://onjava.com/pub/a/onjava/excerpt/javaentnut_2/index3.html
  446. Spring Data JDBC Generic DAO Implementation - Most Lightweight ORM Ever: http://architects.dzone.com/articles/spring-data-jdbc-generic-dao
  447. What You Didn't Know About JDBC Batch: http://java.dzone.com/articles/what-you-didnt-know-about-jdbc (Improvement times of Batching queries, by DBMS)
  448. SQL DECIMAL to Java Number: https://stackoverflow.com/questions/35702026/sql-decimal-to-java-number
  449. How To Map The Date And Time API with JPA 2.2: https://www.thoughts-on-java.org/map-date-time-api-jpa-2-2/
  450. Using “LIKE” wildcard in PreparedStatement: https://stackoverflow.com/questions/8247970/using-like-wildcard-in-prepared-statement
  451. Configuring JDBC in TomEE: https://www.tomitribe.com/blog/configuring-jdbc-in-tomee/
  452. MySQL JDBC over SSL problem: https://stackoverflow.com/questions/4663061/mysql-jdbc-over-ssl-problem/23807763
  453. MySQL JDBC Statement Caching: https://vladmihalcea.com/mysql-jdbc-statement-caching/
  454. Persisting fast in database - JDBC: https://medium.com/@jerolba/persisting-fast-in-database-jdbc-76912ec2ef42
  455. What are the advantages of stored procedures? (and how to call them from Java): https://www.tutorialspoint.com/what-are-the-advantages-of-stored-procedures
  456. Difference between Statement vs PreparedStatement vs CallableStatement in Java: https://javarevisited.blogspot.com/2021/05/difference-between-statement-vs-preparedstatement-vs-callablestatement-jdbc-java.html#ixzz6vrQIF5Pv : https://javarevisited.blogspot.com/2021/05/difference-between-statement-vs-preparedstatement-vs-callablestatement-jdbc-java.html
  457. AceQL: https://www.aceql.com/ | Server - SRC | Client - SRC
  458. AceQL Releases Open-Source JDBC-over-HTTP Driver: https://www.infoq.com/news/2021/06/aceql-jdbc-http/
  459. JDBC - ResultSetMetadata: https://dzone.com/articles/what-is-jdbc-resultsetmetadata-and-jdbc-resultsetm
  460. Sun Java Developer Network - EJB: http://java.sun.com/products/ejb/
  461. wikipedia: EJB
  462. What Is an Entity Bean?: http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/EJBConcepts4.html
  463. What Is a Message-Driven Bean?: http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/EJBConcepts5.html
  464. 3 Types of EJB: http://www.java-samples.com/showtutorial.php?tutorialid=122
  465. What's Wrong with the EJB 2 Specification?: http://onjava.com/pub/a/onjava/2001/02/28/ejb.html
  466. Enterprise JavaBeans Fundamentals: http://java.sun.com/developer/onlineTraining/EJBIntro/EJBIntro.html
  467. EJB Transaction: http://www.ucertify.com/article/ejb-transaction.html
  468. Injection of DataSource Example: http://openejb.apache.org/3.0/injection-of-datasource-example.html
  469. Creating and Using Contexts and Dependency Injection (CDI) Events: http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/CDI_Events/cdi_events.html
  470. EJB Backend with NetBeans RCP Frontend on Maven: http://netbeans.dzone.com/ejb-backend-netbeans-rcp
  471. The case against annotations: https://blog.softwaremill.com/the-case-against-annotations-4b2fb170ed67
  472. An Introduction to Annotations and Annotation Processing in Java: https://reflectoring.io/java-annotation-processing/
  473. JNLP spec: http://java.sun.com/javase/technologies/desktop/javawebstart/download-spec.html
  474. Java Network Launch Protocol (JNLP) Support: http://www.oracle.com/technetwork/java/javase/index-142562.html#EXAMPLES_WORLDWIND
  475. JNLP API Examples: http://docs.oracle.com/javase/1.5.0/docs/guide/javaws/developersguide/examples.html
  476. Old link for JNLP demos: http://java.sun.com/javase/technologies/desktop/javawebstart/demos.html (*DOWN*)
  477. OpenJNLP: https://sourceforge.net/projects/openjnlp/
  478. Deploying Software with JNLP and Java Web Start: https://www.oracle.com/technical-resources/articles/javase/ds-jnlp-javawebstart.html
  479. What is Java Web Start and how is it launched? : https://java.com/en/download/help/java_webstart.html
  480. Running a Java Web Start Application: https://docs.oracle.com/javase/tutorial/deployment/webstart/running.html
  481. Deploying a Java Web Start Application: https://docs.oracle.com/javase/tutorial/deployment/webstart/deploying.html
  482. Java Web Start & JNLP: http://www.programix.com/JavaWebStart/JavaWebStartPresentation.html
  483. Java WebStart Is Dead -- What Should We Do Now?: http://www.slideshare.net/HendrikEbbers/java-webstart-is-dead-what-should-we-do-now
  484. Java Web Start will die! -- OpenWebStart in inubation: https://dev.karakun.com/webstart/
  485. What to do when Java SE 11 removes JNLP: https://opensource.com/article/19/4/migrating-jnlp-java-se-11
  486. jPRO - Java in the Browser (once again): https://www.jpro.one | DOCS | DEMO | SRC (cross-browser plugin/extension/add-on, similar to OpenWebStart but with commercial support/pricing)
  487. Structure of the JNLP file: https://docs.oracle.com/javase/tutorial/deployment/deploymentInDepth/jnlpFileSyntax.html
  488. Installing a Java Application as a Windows Service: http://dzone.com/articles/installing-a-java-application-as-a-windows-service
  489. What is the status of SwingLabs (SwingX) post acquisition: https://stackoverflow.com/questions/6818528/what-is-the-status-of-swinglabs-swingx-post-acquisition
  490. swing-bug 0.4 -- Making JCarousel sexier with Effects: http://web.archive.org/web/20071015205235/http://blogofbug.com/2007/03/
  491. BlogOfBug -- Improved Dock Panel and Coder Stupidity: http://web.archive.org/web/20071030183054/http://www.blogofbug.com/2007/02/11/improved-dock-panel-and-coder-stupidity/
  492. BlogOfBug -- Updates to JCarouselMenu and some bug fixes: http://web.archive.org/web/20070705140159/http://www.blogofbug.com/2007/02/10/updates-to-jcarouselmenu-and-some-bug-fixes/
  493. BlogOfBug -- Updating Blog Jar and New Features to Carousel: http://web.archive.org/web/20070705140255/http://www.blogofbug.com/2007/02/09/updating-blog-jar-and-new-features-to-carousel/
  494. : http://web.archive.org/web/20071205015241/http://www.blogofbug.com/2007/03/28/janimatedlist-minor-change-demo-source-code/
  495. BlogOfBug -- Carousel Menu (a la Apple TV): http://web.archive.org/web/20071215200236/http://www.blogofbug.com/2007/01/
  496. BlogOfBug -- Java Carousel Part 3 - Reflected Images Love Carousels: http://web.archive.org/web/20071209122306/http://www.blogofbug.com:80/2006/12/29/java-carousel-part-3-reflected-images-love-carousels/
  497. BlogOfBug -- Java Carousel Part 2 - Creating a Carousel Component: http://web.archive.org/web/20071209122248/http://www.blogofbug.com/2006/12/29/java-carousel-part-2-creating-a-carousel-component/
  498. BlogOfBug -- Java Carousel Part 1 - Layout and Animation: http://web.archive.org/web/20071015205222/http://blogofbug.com/2006/12/#post-27
  499. BlogOfBug -- Java Dock Component: http://web.archive.org/web/20070705084521/http://www.blogofbug.com/2007/01/11/java-dock-component/
  500. jlGUI -- Java Music Player: http://www.javazoom.net/jlgui/documents.html (Winamp clone in Java)
  501. Griffon framework: http://griffon-framework.org/ (multi-paradigm Desktop Application framework inspired by Grails for Groovy-based WebApps)
  502. How to center a Swing frame or dialog: http://www.java2s.com/Code/Java/Swing-JFC/Howtocenteraframeordialog.htm
  503. A Visual Guide to Layout Managers: https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html
  504. Swing -- Nimbus Cross-platform Look & Feel: https://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/nimbus.html
  505. Handling Images in a Java GUI Application: http://netbeans.org/kb/docs/java/gui-image-display.html
  506. Designing an Advanced Java Form Using the GridBag Customizer: http://netbeans.org/kb/docs/java/gbcustomizer-advanced.html?intcmp=925655
  507. Connecting to Oracle Database from NetBeans IDE 7.0: http://netbeans.org/kb/docs/ide/oracle-db.html?intcmp=925655
  508. How do I add key listener event handler to JTextField?: http://www.kodejava.org/examples/224.html
  509. React to the ENTER key in a Textfield: http://www.rgagnon.com/javadetails/java-0253.html
  510. Programmatically clicking a GUI button in Java Swing: http://stackoverflow.com/questions/5109274/programmatically-clicking-a-gui-button-in-java-swing
  511. Writing Your own Twitter Application Using Java, Swing, and Twitter4j: http://www.developer.com/java/article.php/3833556/Writing-Your-own-Twitter-Application-Using-Java-Swing-and-Twitter4j.htm
  512. Minesweeper In Java (Swing + AWT): https://www.tutorialflow.com/generalexamples/minesweeper-in-java/
  513. Java Programming Tutorial -- Programming Graphical User Interface (GUI): http://www.ntu.edu.sg/home/ehchua/programming/java/j4a_gui.html
  514. What Future Java Releases Mean for Legacy Desktop Apps: http://dzone.com/articles/what-the-future-java-releases-will-mean-for-legacy
  515. Java Swing Browser GUI created indirectly on a PDA: http://www.researchgate.net/figure/Java-Swing-Browser-GUI-created-indirectly-on-a-PDA_fig1_220780994
  516. ON-SCREEN KEYBOARD FOR YOUR JAVA SWING SOFTWARE: http://www.mindfusion.eu/java-keyboard.html
  517. Introduction to Event Listeners: http://docs.oracle.com/javase/tutorial/uiswing/events/intro.html
  518. Swing CardLayout: help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.wb.swing.doc.user%2Fhtml%2Flayoutmanagers%2Fswing%2Fcardlayout.html
  519. How to add row in JTable?: https://stackoverflow.com/questions/3549206/how-to-add-row-in-jtable
  520. A JButton listener example: https://alvinalexander.com/java/jbutton-listener-pressed-actionlistener
  521. JPanel doesn't update until resize Jframe: https://stackoverflow.com/questions/11069807/jpanel-doesnt-update-until-resize-jframe
  522. Retrieving a double from a JTextArea while solving for X: https://stackoverflow.com/questions/11065830/retrieving-a-double-from-a-jtextarea-while-solving-for-x/11067529#11067529
  523. Check valid enum values before using enum: https://stackoverflow.com/questions/1509614/check-valid-enum-values-before-using-enum/2546726#2546726
  524. Anonymous Classes in Java: https://www.baeldung.com/java-anonymous-classes
  525. [Solved] No main manifest attribute, in jar Maven and SpringBoot: https://javahungry.blogspot.com/2019/05/solved-no-main-manifest-attribute-in-jar.html (what to do for "runnable/executable JARs" .vs. regular compiled JARs
  526. The state of JVM desktop frameworks - intro: https://blog.frankel.ch/state-jvm-desktop-frameworks/1/
  527. The state of JVM desktop frameworks - Swing: https://blog.frankel.ch/state-jvm-desktop-frameworks/2/ | SRC
  528. JavaFX: http://javafx.com/samples/index.html
  529. Google App Engine and Managed VM's -- Java Framework support & integrations: http://www.dzone.com/articles/java-frameworks-and (table summarizing frameworks that used to not work but currently do work i Google's AppEngine - Cloud Application Hosting Service)
  530. Why and when you should use JPA: https://vladmihalcea.com/why-and-when-use-jpa/
  531. JavaEE 5+ -- EntityManager Interface: https://docs.oracle.com/javaee/5/tutorial/doc/bnbqw.html#bnbqx
  532. Using a Data Source with JPA (VIDEO): https://www.youtube.com/watch?v=dl30p1j-Wbw
  533. Using EJB Lite and JPA in a Java SE Application: http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/EJBLiteAndJPAInJavaSE/EJBLiteAndJPAInJavaSE.html
  534. Looking Forward to JPA 2.0 -- What's New: http://java.dzone.com/articles/looking-forward-jpa-20
  535. Looking Forward To JPA 2.0 - Part 2: http://java.dzone.com/articles/looking-forward-to-jpa-20-part
  536. The Top 5 New Annotations in JPA 2: http://www.developer.com/java/ent/article.php/3898336/The-Top-5-New-Annotations-in-JPA-2.htm
  537. The abstract schema type is unknown: https://stackoverflow.com/questions/18089699/the-abstract-schema-type-is-unknown
  538. PRO EJB 3.0 attention Mike Keith and Merrick Schincariol: https://coderanch.com/t/318551/java/PRO-EJB-attention-Mike-Keith
  539. Managing databases with Eclipse and the Database Tools tutorial: https://www.vogella.com/tutorials/EclipseDataToolsPlatform/article.html
  540. Eclipse plugins -- Dali - JPA tool user guide: http://www.eclipse.org/webtools/dali/docs/dali_user_guide_2.3.pdf (NOTE: now integrated into Eclipse Data Tools)
  541. Creating JPA entity beans in a JPA project from database tables: https://www.ibm.com/support/knowledgecenter/SSRTLW_9.6.1/com.ibm.jpa.doc/topics/t_jpa_bottomup.html
  542. The Ultimate Guide on Client-Generated IDs in JPA Entities: https://www.jpa-buddy.com/blog/the-ultimate-guide-on-client/
  543. The Ultimate Guide on Composite IDs in JPA Entities: https://www.jpa-buddy.com/blog/the-ultimate-guide-on-composite-ids-in-jpa-entities/
  544. Object-Relational Mappings - Generating JPA Entities: http://docs.oracle.com/cd/E14545_01/help/oracle.eclipse.tools.orm.doc/html/files/genJPAEntities.html
  545. Creating JPA entity beans from database tables: http://publib.boulder.ibm.com/infocenter/radhelp/v8/index.jsp?topic=%2Fcom.ibm.jpa.doc%2Ftopics%2Ft_jpa_bottomup.html
  546. Can I auto create database from JPA?: http://ubuntuforums.org/showthread.php?t=1023198
  547. JPQL tutorial: https://thoughts-on-java.org/jpql/
  548. A Beginner's Guide to JPA and Hibernate Cascade Types: http://java.dzone.com/articles/beginners-guide-jpa-and
  549. Opinion Piece - How JPA 2.1 has become the new EJB 2.0 thanks to Annotations: http://blog.jooq.org/2015/04/15/how-jpa-2-1-has-become-the-new-ejb-2-0/
  550. Java EE 7 - Applying JPA to Stored Procedures: http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Stored_Proc/StoredProcedures.html
  551. A Beginner’s Guide to JPA’s "persistence.xml": https://www.thoughts-on-java.org/jpa-persistence-xml/
  552. Optimistic locking in JPA/Hibernate: https://blog.arnoldgalovics.com/optimistic-locking-in-jpa-hibernate/
  553. Live with your SQL-fetish and choose the right tool for the job : https://speakerdeck.com/michaelsimons/live-with-your-sql-fetish-and-choose-the-right-tool-for-the-job
  554. 5 Things Beginners Need to Know Before Using JPA / Hibernate / EclipseLink: https://www.thoughts-on-java.org/5-things-beginners-need-to-know-before-using-jpa-hibernate-eclipselink/
  555. What is the Difference Between JPA and Hibernate?: http://www.javaguides.net/2018/12/what-is-difference-between-jpa-and-hibernate.html
  556. What is the Difference Between OpenJPA, EclipseLink & Hibernate?: https://thoughts-on-java.org/difference-jpa-hibernate-eclipselink/
  557. JPA tutorials: http://www.javaguides.net/p/jpa-tutorial-java-persistence-api.html
  558. Introduction to JPA & Hibernate including examples: https://www.slideshare.net/ecosio/introduction-to-jpa-and-hibernate-using
  559. Java Persistence API (JPA) Step By Step (SLIDES): https://www.slideshare.net/junyuo/java-persistence-api-jpa-step-by-step-presentation
  560. JPA Performance Benchmark (JPAB): https://www.jpab.org
  561. JPA Join Types: https://www.baeldung.com/jpa-join-types
  562. JPA & SQL injection prevention: https://www.baeldung.com/sql-injection
  563. CapCourse #161 -- The Java Persistence API: http://www.capcourse.com/161_Outline_21.html | DOWNLOAD
  564. CapCourse #162 -- Java EE Persistence: http://www.capcourse.com/162_Outline_21.html
  565. A JPQL Terminal: http://www.capcourse.com/Library/JPQLTerminal/index.html
  566. JSF, JPA, and EJB: http://www.capcourse.com/Library/JSF+EJB/JSF+EJB_50.pdf
  567. Configuring and mapping database tables to JPA entities: https://nullbeans.com/configuring-and-mapping-database-tables-to-jpa-entity-classes/
  568. JPA Tutorial - JPA OneToMany Mapping Table Example: http://www.java2s.com/Tutorials/Java/JPA/0810__JPA_OneToMany_Mapping_Table.htm
  569. JPA Set Mapping: https://www.javatpoint.com/jpa-set-mapping
  570. Best Practices for Many-To-One and One-To-Many Association Mappings: http://https://thoughts-on-java.org/best-practices-many-one-one-many-associations-mappings/
  571. The best way to map a @OneToMany relationship with JPA and Hibernate: https://vladmihalcea.com/the-best-way-to-map-a-onetomany-association-with-jpa-and-hibernate/
  572. @ManyToOne JPA & Hibernate association best practices: https://vladmihalcea.com/manytoone-jpa-hibernate/
  573. JPA -- WHERE clause (JPQL / Criteria API): https://www.objectdb.com/java/jpa/query/jpql/where
  574. JPA counting its subclass for one to many relationship: https://stackoverflow.com/questions/41109769/jpa-counting-its-subclass-for-one-to-many-relationship
  575. JPA Tutorial - JPA Query COUNT Example: http://www.java2s.com/Tutorials/Java/JPA/4325__JPA_Query_In_OneToMany.htm
  576. JPA Tutorial - JPA Query COUNT Example: http://www.java2s.com/Tutorials/Java/JPA/4510__JPA_Query_COUNT.htm
  577. JPA Tutorial - JPA OneToMany Mapping Table Example: http://www.java2s.com/Tutorials/Java/JPA/0810__JPA_OneToMany_Mapping_Table.htm
  578. JPA Tutorial - JPA Query Date Parameters Example: http://www.java2s.com/Tutorials/Java/JPA/4030__JPA_Query_Date_Parameters.htm
  579. Ternary Associations – Modelling Associations between 3 Entities: https://thorben-janssen.com/ternary-associations/
  580. How to map Date and Timestamp with JPA and Hibernate: https://vladmihalcea.com/date-timestamp-jpa-hibernate/
  581. How to map a PostgreSQL ARRAY (enum) to a Java List with JPA and Hibernate: https://vladmihalcea.com/postgresql-array-java-list/
  582. JPA Criteria Metamodel Generation and Usage Guide: https://vladmihalcea.com/jpa-criteria-metamodel/
  583. How to change an attribute before INSERT and UPDATE: https://thorben-janssen.com/change-before-persist/
  584. The best way to use Java 14+ Records with JPA & Hibernate: https://vladmihalcea.com/java-records-jpa-hibernate/
  585. Java Records – How to use them with Hibernate and JPA: https://thorben-janssen.com/java-records-hibernate-jpa/
  586. JDK 14 Records for Spring: https://dzone.com/articles/jdk-14-records-for-spring-devs
  587. Why Java's Records Are Better* Than Lombok's @Data and Kotlin's Data Classes: https://nipafx.dev/java-record-semantics/
  588. Spring Data JPA -- Query Projections: https://thorben-janssen.com/spring-data-jpa-query-projections/
  589. Implement a Distributed Database to Your Java Application that's JPA-compatible (using "Interference Open Cluster" project, aka. io.cluster): https://dzone.com/articles/an-introduction-to-interference-implement-a-distri | SRC
  590. JPA AttributeConverter – A Beginner’s Guide: https://vladmihalcea.com/jpa-attributeconverter/
  591. JPA "Association Fetching" validator: https://vladmihalcea.com/jpa-association-fetching-validator/
  592. Querying JPA Entities with JPQL and Native SQL: https://www.oracle.com/technical-resources/articles/vasiliev-jpql.html
  593. Migrating from Hibernate Criteria Search API to JPA Criteria API: https://thorben-janssen.com/migration-criteria-api/
  594. Migrating from JPA 2.x to 3.0: https://thorben-janssen.com/migrating-jpa-2-x-to-3-0/
  595. Netbeans plugins -- Jeddict - JPA Modeler: http://plugins.netbeans.org/plugin/53057/jpa-modeler
  596. MinuteProject -- JPA1/JPA2 Swing Desktop GUI - Reverse Engineering Tool: https://javacodesamples.wordpress.com/2011/02/04/jpa2-reverse-engineering-tool/
  597. MinuteProject 4.x -- JPA2 -- Lazuly showcase: https://minuteproject.blogspot.com/2011/06/minuteproject-4-jpa2-lazuly-showcase.html
  598. IntelliJ -- JPA Buddy plugin: https://plugins.jetbrains.com/plugin/15075-jpa-buddy
  599. How to implement an AttributeConverter to support custom types: https://thorben-janssen.com/jpa-attribute-converter/
  600. JPA 2.0 - Why AccessType is Relevant: https://dzone.com/articles/12-feb-jpa-20-why-accesstype
  601. Persisting fast in database - JPA: https://medium.com/@jerolba/persisting-fast-in-database-1af4a281e3a
  602. Can we use JPA without Hibernate: https://stackoverflow.com/questions/15487631/can-we-use-jpa-without-hibernate
  603. http://www.hibernate.org/license
  604. Hibernate Made Easy: http://jpa.ezhibernate.com/Javacode/learn.jsp?tutorial=24goodhibernatejpabook
  605. @DiscriminatorFormular – Modeling Single Table Inheritance Without a Discriminator: https://thorben-janssen.com/discriminatorformular/
  606. JPetStore lives on as the official example of typical usage of iBatis framework: http://sourceforge.net/projects/ibatisjpetstore/
  607. IBATIS: http://ibatis.apache.org/ (RETIRED)
  608. EclipseLink -- Annotation Extensions Reference: https://www.eclipse.org/eclipselink/documentation/2.7/jpa/extensions/annotations_ref.htm#CACGCEIJ
  609. JPA Entities and/vs DTOs: https://stackoverflow.com/questions/5216633/jpa-entities-and-vs-dtos
  610. The best way to map a projection query to a DTO (Data Transfer Object) with JPA and Hibernate: https://vladmihalcea.com/the-best-way-to-map-a-projection-query-to-a-dto-with-jpa-and-hibernate/
  611. Entities or DTOs – When should you use which projection?: https://thoughts-on-java.org/entities-dtos-use-projection/
  612. What is DTO equivalent term for objects returned from DAL?: https://stackoverflow.com/questions/46091178/what-is-dto-equivalent-term-for-objects-returned-from-dal/46175582#46175582
  613. Data Transfer Object (DTO) and Data Access Objects (DAO) concepts and Model View Controller (MVC): https://stackoverflow.com/questions/14366001/dto-and-dao-concepts-and-mvc
  614. Alternatives to DTO: https://blog.frankel.ch/alternatives-dto/ (Object Serialization/Deserialization; JPA projection; Jackson, other libs & manual data Export as RDF/XML/JSON/CSV/TSV/etc; GraphQL and/or "API Gateways" to Microservices)
  615. DataNucleus Access Platform 3.1: http://www.datanucleus.org/products/accessplatform_3_1/index.html
  616. CXF module-info.java package names (for use with Java 1.9+): https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=85475385
  617. Embracing a Modular Java Platform -- Apache CXF on Java 10: https://dzone.com/articles/embracing-modular-java-platform-apache-cxf-on-java
  618. ROME RSS Parser (former Sun page): https://web.archive.org/web/20070706121841/https://rome.dev.java.net/
  619. jEnv docs -- Manage your Java environment: https://www.jenv.be
  620. Configuring jEnv the "right" way: https://developer.bring.com/blog/configuring-jenv-the-right-way/
  621. Managing Multiple JDK Installations With jEnv: https://reflectoring.io/manage-jdks-with-jenv/
  622. Build Java Application for Mobile Devices: http://www.youtube.com/watch?v=RZJQlIxusq
  623. Will Google's Android ever support .NET: http://stackoverflow.com/questions/214615/will-google-android-ever-support-net/214632#214632
  624. The Most Popular Java Tools for Every Phase of Development: http://dzone.com/articles/research-most-popular-java-tools-for-every-phase-o
  625. How do I add the Java API documentation to Eclipse?: https://stackoverflow.com/questions/4600172/how-do-i-add-the-java-api-documentation-to-eclipse
  626. JDK 7 -- javadoc - The Java API Documentation Generator: https://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html#author
  627. How to Write Doc Comments for the Javadoc Tool: https://www.oracle.com/technetwork/articles/java/index-137868.html
  628. How to write, generate and use Javadoc in Eclipse?: https://www.tutorialspoint.com/How-to-write-generate-and-use-Javadoc-in-Eclipse
  629. java.util.formatter: https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html (good JavaDoc example)
  630. Ant build tool -- org.apache.tools.ant.DefaultLogger: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/DefaultLogger.java?view=co (good JavaDoc example)
  631. Google Guava lib - com.google.common.eventbus: http://google.github.io/guava/releases/19.0/api/docs/com/google/common/eventbus/package-summary.html#package_description (good JavaDoc example)
  632. Good example of Javadoc: https://stackoverflow.com/questions/1079713/good-example-of-javadoc
  633. How to Write Doc Comments for the Javadoc Tool: http://java.sun.com/j2se/javadoc/writingdoccomments/ (old Sun link)
  634. Usage of @see in JavaDoc?: https://stackoverflow.com/questions/5011291/usage-of-see-in-javadoc
  635. Javadoc Tutorial: http://www.mcs.csueastbay.edu/~billard/se/cs3340/ex7/javadoctutorial.html
  636. How do I change the (default/auto-generated) Javadocs template generated in Eclipse?: https://stackoverflow.com/questions/2612633/how-do-i-change-the-javadocs-template-generated-in-eclipse
  637. Using the Generate Javadoc Wizard (in RAD/Eclipse): http://pic.dhe.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftasks-198.htm
  638. Why can't I generate javadoc for this specific project? No error message: https://stackoverflow.com/questions/13123905/why-cant-i-generate-javadoc-for-this-specific-project-no-error-message
  639. Can't generate javadoc in eclipse: https://stackoverflow.com/questions/15434955/cant-generate-javadoc-in-eclipse
  640. JDK - Collections class (clean Javadoc example): http://www.docjar.net/html/api/java/util/Collections.java.html
  641. Apache Ant - DefaultLogger (clean Javadoc example): http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/DefaultLogger.java?view=co
  642. Apache Ant - DirectoryScanner (clean Javadoc example): http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/DirectoryScanner.java?view=markup
  643. Java - Documentation Comments: https://www.tutorialspoint.com/java/java_documentation.htm
  644. How Do I Document Packages in Java?: https://stackoverflow.com/questions/624422/how-do-i-document-packages-in-java
  645. How to insert creation date in JavaDoc: https://stackoverflow.com/questions/29380477/how-to-insert-creation-date-in-javadoc
  646. Java's @version %I%, %G% auto-generation and git: https://stackoverflow.com/questions/40622695/version-i-g-and-git (this was a feature of SCCS version control system, but would need to be changed to Git Attributes for variable-based replacements like $Date$ or something similar to work with GIT)
  647. Inheriting Javadoc Method Comments: https://dzone.com/articles/inheriting-javadoc-method-comments (using the {@inheritDoc} template)
  648. A Guide to Formatting Code Snippets in Javadoc: https://reflectoring.io/howto-format-code-snippets-in-javadoc/ (using {@code code goes here} markup, with <pre> tags if indentation and whitespace needs to be preserved)
  649. Linking to an external URL in Javadoc?: https://stackoverflow.com/questions/1082050/linking-to-an-external-url-in-javadoc
  650. JEP 413 -- Code Snippets in Java API Documentation: https://openjdk.java.net/jeps/413 (linkable, regex-ready replacement for "inline code" within comments typically using "<pre>" tags and/or "@code" comments)
  651. New Javadoc Tags @apiNote, @implSpec, and @implNote: https://nipafx.dev/javadoc-tags-apiNote-implSpec-implNote/
  652. Linking to an External URL in Javadoc: https://www.baeldung.com/javadoc-linking-external-url
  653. Add a Reference to Method Parameters in Javadoc: https://www.baeldung.com/javadoc-reference-method-parameter
  654. JDK 18 -- Code Snippets in Java API Documentation: https://marxsoftware.blogspot.com/2021/09/jdk-18-code-snippets-in-java-api.html
  655. Sip of Java - JavaDoc Code Snippet API: https://inside.java/2022/04/04/sip46/
  656. Manage multiple Java SDKs with SDKMAN! with ease: https://blog.codeleak.pl/2020/01/manage-multiple-java-sdks-with-sdkman.html
  657. The JVM Architecture Explained: http://dzone.com/articles/jvm-architecture-explained
  658. Introduction to Java Bytecode: https://dzone.com/articles/introduction-to-java-bytecode
  659. Snyk JVM Ecosystem Report 2021 Finds Increased Usage of Java 11 in Production: https://www.infoq.com/news/2021/07/snyk-jvm-2021/
  660. State of the Java Ecosystem Report from New Relic: https://www.infoq.com/news/2022/05/java-ecosystem-report-2022/
  661. A Picture of Java in 2020: https://blog.jetbrains.com/idea/2020/09/a-picture-of-java-in-2020/
  662. The State of Java in 2019: https://www.baeldung.com/java-in-2019
  663. JVM Ecosystem Report 2018: https://snyk.io/blog/jvm-ecosystem-report-2018 | PDF
  664. The State of Java in 2018: https://stackify.com/java-2018/
  665. What is the difference between public, protected, package-private and private in Java?: https://stackoverflow.com/questions/215497/what-is-the-difference-between-public-protected-package-private-and-private-in#215505
  666. Invoking a Private Method in Java: https://www.baeldung.com/java-call-private-method
  667. Why doGet(), doPost() Methods are “protected”?: https://stackoverflow.com/questions/14556304/why-doget-dopost-methods-are-protected
  668. Oracle Java specs -- Chapter 4 - The class File Format: https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html
  669. Java – How to list all files in a directory?: https://www.mkyong.com/java/java-how-to-list-all-files-in-a-directory/
  670. Java, List only subdirectories from a directory, not files: https://stackoverflow.com/questions/5125242/java-list-only-subdirectories-from-a-directory-not-files/5125258
  671. Java NIO, get all subfolders of some folder: https://stackoverflow.com/questions/38269073/java-nio-get-all-subfolders-of-some-folder
  672. Quickly creating URIs with UriBuilder (BuilderPattern): https://blog.sebastian-daschner.com/entries/creating-uris-with-uribuilder
  673. Java SE 6 API Docs - Properties class: http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html
  674. How to read a file from resources folder in properties file: https://stackoverflow.com/questions/50492133/how-to-read-a-file-from-resources-folder-in-properties-file
  675. Java's “os.name” for Windows 10?: https://stackoverflow.com/questions/31909107/javas-os-name-for-windows-10
  676. StringBuffer to File - Need Example: https://coderanch.com/t/391312/java/StringBuffer-File
  677. How to use comparison operators like >, =, < on BigDecimal: https://stackoverflow.com/questions/34677644/how-to-use-comparison-operators-like-on-bigdecimal
  678. Arrays in Java: https://introcs.cs.princeton.edu/java/14array/
  679. Guava's Objects Class -- Equals, HashCode, and ToString: https://www.javaworld.com/article/2074417/guava-s-objects-class--equals--hashcode--and-tostring.html
  680. How to convert Object array to String array in Java: https://stackoverflow.com/questions/1018750/how-to-convert-object-array-to-string-array-in-java
  681. Java Program to Check if An Array Contains a Given Value: https://www.programiz.com/java-programming/examples/array-contains-value
  682. Java Recursion: https://www.programiz.com/java-programming/recursion
  683. Recursion in Java: https://www.javatpoint.com/recursion-in-java
  684. Java Fibonacci examples: https://www.mkyong.com/java/java-fibonacci-examples/
  685. Java - format double value as dollar amount: https://stackoverflow.com/questions/13791409/java-format-double-value-as-dollar-amount#13791422
  686. I need to convert an int variable to double: https://stackoverflow.com/questions/13252903/i-need-to-convert-an-int-variable-to-double
  687. Advanced Java Tutorial list: http://www.javacodegeeks.com/2015/09/advanced-java.html
  688. Invoke methods of an object using reflection: http://javadb.com/invoke-methods-of-an-object-using-reflection
  689. Java dynamic function (method) calling through Generics/Reflection: https://stackoverflow.com/questions/3050967/java-dynamic-function-calling
  690. How to pass a type as a method parameter in Java: https://stackoverflow.com/questions/2240646/how-to-pass-a-type-as-a-method-parameter-in-java/6144310
  691. Java is Pass-by-Value, Dammit!: http://www.javadude.com/articles/passbyvalue.htm
  692. Calling a method named “string” at runtime in Java and C: https://stackoverflow.com/questions/2882948/calling-a-method-named-string-at-runtime-in-java-and-c
  693. Java Reflection example tutorial: https://www.journaldev.com/1789/java-reflection-example-tutorial
  694. Non-Repeating Random(s) http://www.dreamincode.net/code/snippet2165.htm
  695. Generate random numbers : http://technojeeves.com/joomla/index.php/free/65-generate-random-numbers
  696. Java Write To File: http://www.roseindia.net/java/example/java/io/java-write-to-file.shtml
  697. How to write to file in Java using BufferedWriter: https://beginnersbook.com/2014/01/how-to-write-to-file-in-java-using-bufferedwriter/
  698. Java – Write to File: https://howtodoinjava.com/java/io/java-write-to-file/
  699. Easy way to write contents of a Java InputStream to an OutputStream: https://stackoverflow.com/questions/43157/easy-way-to-write-contents-of-a-java-inputstream-to-an-outputstream
  700. How to convert InputStream to OutputStream in Java: https://attacomsian.com/blog/java-convert-inputstream-to-outputstream
  701. Managing Metadata (File and File Store Attributes): http://docs.oracle.com/javase/tutorial/essential/io/fileAttr.html
  702. How can I extract meta data from various video file formats?: http://stackoverflow.com/questions/4941961/how-can-i-extract-meta-data-from-various-video-file-formats
  703. Java library to check a video's metadata (if it's 1080p, 720p, etc): http://stackoverflow.com/questions/7142645/java-library-to-check-a-videos-metadata-if-its-1080p-720p-etc
  704. Playing video (in Java) using JMF, JavaFX or VLCj: http://stackoverflow.com/questions/11097174/playing-video-using-jmf
  705. Is there a Java API for mp4 files?: http://stackoverflow.com/questions/3015393/is-there-a-java-api-for-mp4-files
  706. Inspect a video file with xuggler Java lib: https://examples.javacodegeeks.com/desktop-java/xuggler/inspect-a-video-file-with-xuggler/
  707. Extracting metadata of a Media files with JAVE: http://varuntayur.wordpress.com/2014/08/08/extracting-metadata-of-a-media-files-with-jave/
  708. How to Extract Meta-data from Media file in Android: http://mrbool.com/how-to-extract-meta-data-from-media-file-in-android/28130
  709. Getting Started with FFMPEG-Java: http://fmj-sf.net/ffmpeg-java/getting_started.php
  710. jNotify for file directory monitoring/change listening: http://stackoverflow.com/questions/4941869/directory-listener-in-java
  711. How to watch the file system for changes in Java 7 (JDK 7) : http://java.dzone.com/news/how-watch-file-system-changes
  712. https://web.archive.org/web/20110714194906/http://www.stripesframework.org/display/stripes/JQuery's+Uploadify+with+Stripes
  713. AJAX file upload progress for Java using commons fileupload and prototype: www.ioncannon.net/programming/38/ajax-file-upload-progress-for-java-using-commons-fileupload-and-prototype/
  714. AJAX file upload example with JSP: https://web.archive.org/web/20120229040346/http://www.devedup.com/ajaxfileupload/
  715. Handling Form-based File Upload with Java Servlet or JSP (that supports WAP): http://www.developershome.com/wap/wapUpload/wap_uploacd.asp?page=jsp
  716. Java regular expression patterns: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html#sum
  717. How to split Java String with delimeter comma, space, new line, tab?: http://myprogrammingblog.com/2012/02/20/java-how-to-split-java-string-with-delimeter-comma-space-new-line-tab-solved/
  718. When to use AtomicReference in Java?: https://stackoverflow.com/questions/3964211/when-to-use-atomicreference-in-java
  719. Red Hat replaces Oracle as OpenJDK 8, OpenJDK 11 steward: https://www.theserverside.com/news/252461945/Red-Hat-replaces-Oracle-as-OpenJDK-8-OpenJDK-11-steward
  720. Java Version 1.5.0 or 5.0?: https://docs.oracle.com/javase/1.5.0/docs/relnotes/version-5.0.html
  721. Introduction to Java 5 (SLIDES): https://www.slideshare.net/sandeeprawat94/introduction-to-java-64792837
  722. Java 8 Programming Tutorial -- Java with Eclipse - Setup & Getting Started (SLIDES): https://www.slideshare.net/martyhall/java-8-programming-tutorial-java-with-eclipse-setup-and-getting-started
  723. Robotic recon for human exploration -- Method, assessment, and lessons learned: https://www.researchgate.net/publication/237089000_Robotic_recon_for_human_exploration_Method_assessment_and_lessons_learned (Java usage at NASA)
  724. Java -- Curiosity Mars rover: https://twitter.com/java/status/777618329749954562
  725. JDK & macOS: https://dzone.com/articles/jdk-amp-macos
  726. MacOS Java version handling script: https://gist.github.com/dbuschman7/6688de9c00371766599746d747a11f89
  727. The Anatomy of ct.sym — How javac Ensures Backwards Compatibility: https://www.morling.dev/blog/the-anatomy-of-ct-sym-how-javac-ensures-backwards-compatibility/
  728. Java Application Remote Debugging: https://www.baeldung.com/java-application-remote-debugging
  729. jmap - Memory Map: https://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html
  730. Error: Could not find or load main class in Java: http://javarevisited.blogspot.ca/2015/04/error-could-not-find-or-load-main-class-helloworld-java.html
  731. How to Set Classpath for Java on Windows and Linux: http://javarevisited.blogspot.com/2011/01/how-classpath-work-in-java.html
  732. Error -- Could not find or load main class: https://stackoverflow.com/questions/7485670/error-could-not-find-or-load-main-class
  733. How to Run a JAR file from Command Prompt - Windows and UNIX: http://www.java67.com/2016/01/how-to-run-jar-file-from-command-prompt.html
  734. Oracle docs -- Defining Methods: https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html
  735. Overriding vs. Overloading in Java: https://www.programcreek.com/2009/02/overriding-and-overloading-in-java-with-examples/
  736. Object Ordering: https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html
  737. Java Socket Programming Examples: https://cs.lmu.edu/~ray/notes/javanetexamples/
  738. Fixing 7 Common Java Exception Handling Mistakes: https://dzone.com/articles/fixing-7-common-java-exception-handling-mistakes
  739. Best way to check whether a certain exception type was the cause (of a cause, etc ...) in a nested exception?:: https://stackoverflow.com/questions/610628/best-way-to-check-whether-a-certain-exception-type-was-the-cause-of-a-cause-et
  740. Best Practice -- Catching and re-throwing Java Exceptions: https://www.ibm.com/support/pages/best-practice-catching-and-re-throwing-java-exceptions
  741. SYNTACTICAL ERRORS in Java: https://www.dummies.com/programming/java/syntactical-errors-in-java/
  742. Exception Handling & Assertion: http:/www.ntu.edu.sg/home/ehchua/programming/java/j5a_exceptionassert.html
  743. Exceptions in Java: https://www.geeksforgeeks.org/exceptions-in-java/
  744. Java NullPointerException Avoidance and Enhancement Tactics: https://marxsoftware.blogspot.com/2021/02/java-nullpointerexception-avoidance-and.html
  745. How to resolve "java.lang.NullPointerException": http://www.java-tips.org/java-se-tips/java.lang/a-small-tip-on-string-to-avoid-nullpointerexce.html
  746. A small tip on String objects to avoid NullPointerException: http://www.java-tips.org/java-se-tips/java.lang/a-small-tip-on-string-to-avoid-nullpointerexce.html
  747. How to Avoid NullPointerExceptions (NPE)?: http://isagoksu.com/2009/development/java/how-to-avoid-nullpointerexceptions-npe/
  748. How to check if array element is null to avoid NullPointerException in Java: http://stackoverflow.com/questions/425439/how-to-check-if-array-element-is-null-to-avoid-nullpointerexception-in-java
  749. How to check whether an Integer is null or zero in Java?: https://stackoverflow.com/questions/41183668/how-to-check-whether-an-integer-is-null-or-zero-in-java
  750. Converting a "Stack Trace" to a String in Java: https://www.baeldung.com/java-stacktrace-to-string
  751. Declaring a RandomAccessFile object inside a try block gives resource leak warning but declaring it outside does not?: https://stackoverflow.com/questions/26775874/declaring-a-randomaccessfile-object-inside-a-try-block-gives-resource-leak-warni
  752. Java.io.RandomAccessFile.close() Method: http://www.tutorialspoint.com/java/io/randomaccessfile_close.htm
  753. Java BigInteger example: http://www.roseindia.net/java/java-biginteger/java-biginteger.shtml
  754. BigDecimal .vs. BigInteger: https://www.baeldung.com/java-bigdecimal-biginteger
  755. Why You Should Never Use Float and Double for Monetary Calculations: https://dzone.com/articles/never-use-float-and-double-for-monetary-calculatio
  756. Double vs. BigDecimal?: https://stackoverflow.com/questions/3413448/double-vs-bigdecimal
  757. Caution -- Double to BigDecimal in Java: https://www.javaworld.com/article/2073176/caution--double-to-bigdecimal-in-java.html
  758. What Every Computer Scientist Should Know About Floating-Point Arithmetic: https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

See Also

Applet | Servlet | JEE/JSP | J2ME | JavaFX | JavaScript | Android | Kotlin | Groovy | Scala | JUnit