Java

From BC$ MobileTV Wiki
Revision as of 10:46, 27 June 2022 by Bcmoney (Talk | contribs) (JPA)

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] [14] [15]

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.

[17]


7

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

[19] [20] [21] [22] [23]


8

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


[26] [27] [28] [29]


9

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

[32]

[39] [40] [41] [42] [43] [44]


10

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

[47] [48] [49]


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.

[57]

[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] [86] [87]


12

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


[88] [89] [90] [91] [92] [93]


13

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

[94]


14

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

[95] [96] [97] [98] [99] [100] [101] [102] [103]


15

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

[104] [105] [106] [107] [108] [109]


16

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

[110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121]


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.

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


18

[140] [141] [142] [143] [144] [145] [146]


19


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).

[150] [151]

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.

[152] [153] [154] [155]

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).

[156]

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


[158] [159] [160] [161] [162] [163]


OpenJDK

OSS version of the now commercial Oracle JDK.

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

Packaging

Packages

System & speficication for adding Package-level comments.

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

Modules

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

JAR

[214] [215]

[216] [217]

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

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. [231]


Garbage Collection

[232] [233] [234]

Security

[235] [236]

Operators


File I/O

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


Serialization

[256] [257] [258] [259] [260] [261]

Network I/O

[262] [263]

Primitives

Bytes

Money

Currency

Proxy

Methods

[265]

Static

[266]

Hash Code


JavaBeans


Threads

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

[288]

RMI

[289] [290] [291] [292] [293]

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.

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

jwebserver


JNI

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

[302][303][304] [305]

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[306] (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).[307]

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. [308]

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). [311][312]

Abstract

[315]

Interface

[316]

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.


[317] [318] [319] [320] [321] [322] [323] [324]


Optional

[325] [326] [327] [328] [329] [330] [331] [332] [333] [334] [335] [336]

Type-inference

[337] [338] [339]


Collections

Lists

[343] [344] [345]

Sets

Maps

[347] [348] [349] [350] [351] [352] [353]

Streams

[354] [355] [356] [357] [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]


Lambda Expressions

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

[389] [390] [391] [392] [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]

Records

[433] [434] [435] [436]

JMX

[437]

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. [438]

[443] [444] [445] [446] [447] [448] [449] [450] [451] [452] [453] [454] [455]

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.[456][457][458][459]

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)[460]

[462] [463] [464] [465] [466]


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.

[467] [468]

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

[473] [474] [475] [476] [477] [478] [479] [480] [481] [482] [483]

Batch

[484]


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

[486] [487] [488] [489] [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]

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.

[524]

JMF


Frameworks

[525]

JPA

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

[526] [527] [528]

[533] [534] [535] [536] [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]

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.

[596] [597]

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.[598]

See also: Hibernate

[599] [600]

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).[601]

EclipseLink

[603]

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.

[604] [605] [606] [607] [608] [609]

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.[610]


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.

[611] [612]


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

[616]


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.

[618] [619] [620] [621] [622] [623] [624] [625] [626] [627] [628] [629] [630] [631] [632] [633] [634] [635] [636] [637] [638] [639] [640] [641] [642] [643] [644] [645] [646] [647]

Resources

[652] [653] [654] [655] [656]


Tutorials

[669]

[670] [671] [672] [673]

[679]

[680] [681] [682] [683] [684] [685]

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

[704][705][706][707]

[710]


External Links

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

[720] [721]

[722] [723] [724] [725]

[726][727]

[729]

[730] [731] [732] [733] [734] [735]

[736] [737][738] [739] [740] [741] [742]

[743] [744]

[747] [748]

[749][750]


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