From BC$ MobileTV Wiki
(Redirected from JDBC)
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 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


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]


"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]






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


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



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

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


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

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


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


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


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

[45] [46] [47]


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.



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


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

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


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



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

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


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

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


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

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


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

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


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





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

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

[149] [150]


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

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



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



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

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

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


OSS version of the now commercial Oracle JDK.

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



System & speficication for adding Package-level comments.

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


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


[215] [216]

[217] [218]

[222] [223] </ref>The Future of Java Applets:</ref> [224] [225] [226] [227]




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

Garbage Collection

[233] [234] [235]


[236] [237]


File I/O

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


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

Network I/O

[263] [264]










Hash Code



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



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


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

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



[303] [304]




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

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

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


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

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


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


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






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){
   return element;

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

However the following proves difficult for most Devs:

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

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

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


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


[341] [342] [343]



[347] [348] [349] [350]



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

Lambda Expressions

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

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


[438] [439] [440] [441]




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://", or "Queue" could become "jms:sonicmq:queue://").



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

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


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.[461][462][463][464]

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

[467] [468] [469] [470] [471]


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.

[472] [473]

Web Applications


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.


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.


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


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



Graphical User Interfaces


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

See: Applet


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

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

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


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.






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

[531] [532] [533]

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


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.

[602] [603]


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

See also: Hibernate

[605] [606]


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




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


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.

[610] [611] [612] [613] [614] [615]


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


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


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.

[617] [618]


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.


[621] [622]



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.

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


[661] [662] [663] [664] [665]



[679] [680] [681] [682]


[689] [690] [691] [692] [693] [694]

[697] [698] [699] [700] [701]



External Links


[729] [730]

[731] [732] [733] [734]



[739] [740] [741] [742] [743] [744]

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

[752] [753]

[756] [757]



  1. TIOBE programming language index:
  2. - What is Java?:
  3. Java EE 5 Patterns (SL-500-EE5):
  4. wikipedia: Design pattern (computer science)
  5. The History of Java Technology:
  6. The Java™ programming language:
  7. Java history:
  8. Oracle Java SE Support Roadmap:
  9. Oracle's release cadence opens door for Java support rivals:
  10. Java is still available at "zero-cost": (but only OpenJDK not the OracleJDK can be used freely in Production)
  11. Java Is Still Free: | VIDEO
  12. JetBrains' 25 Things We Love About Java: (Java's 25th birthday celebration took place in 2020)
  13. Java Platform Evolution:
  14. wikipedia: Java version history
  15. RIP Java SE 6 - A tribute to Java’s longest-serving edition (JDK6 reaches end of life, JDK7 now default):
  16. JDK 7 GA:
  17. Java 7 - Do we really need <?> in the diamond operator?:
  18. Java EE 7 - Concurrency in Asynch Servlets tutorial:
  19. Java EE 7 - Hello World for MAVEN 3, JAX-RS 2.0 & JSON:
  20. Java EE7 - Developing a Batch Processing Application:
  21. ServiceLoader Dynamic Reloading on JEE7 Web Application:
  22. JDK 8 GA:
  23. Oracle sets date for end of Java 8 updates:
  24. Java 8 compatible Reflection, but Faster:
  25. Java 8 multiline string example:
  26. Life Beyond Java 8:
  27. Amazon Releases Corretto 8 GA - A Downstream Distribution of OpenJDK:
  28. JDK 9 GA:
  29. Overview of JDK 9 & JRE 9 Installation:
  30. New APIs in Java 9 (.vs. Java 8):
  31. Real World Java 9 (WEBINAR):
  32. A hard look at the state of Java modularization:
  33. Explicitly Naming Automatic Java Modules:
  34. Java 9 - The Exciting Bits:
  35. State of Valhalla: Pt.1 - Road to Valhalla | Pt.2 - Language Model | Pt.3 - VM Model
  36. Protocol Buffers -- Developer Guide:
  37. The Evolution of the Producer-Consumer Problem in Java:
  38. Writing High Performance Java Application in Java 9:
  39. JDK 9 is the End of the Road for Some Features:
  40. Java 9 Migration Issues and Resolutions:
  41. Using external libraries in JShell:
  42. Java 9+ modules – Java Platform Module System (JPMS) basics:
  43. JDK 10 GA:
  44. 109 New Features In JDK 10:
  45. Java 10 - Spring & XML bind:
  46. Java 10 -- These APIs are as good as gone:
  47. Java10 code examples:
  48. JDK 11 GA:
  49. Oracle JDK Migration Guide (from 8 to 11):
  50. Java Platform, Standard Edition 11 - Troubleshooting Guide:
  51. Java JDK 11 -- All the new features now available: (CORBA removed, JavaFX & JavaEE separated out to standalone projects)
  52. Missing iFrame view for Javadocs JDK 11: (framed JavaDocs are indeed discontinued, must use Search/Breadcrumbs going forward)
  53. Updates to the Java SE Platform:
  54. A Tale of Two Oracle JDKs:
  55. New APIs in Java 11 (.vs. Java 8):
  56. Guide to Java Versions and Features:
  57. Why are companies still stuck with Java8?:
  58. Time to look beyond Java 8:
  59. 20 Reasons to Move On from Java 8 :
  60. Java 11 overview (VIDEOS):
  61. 90 New Features and APIs in JDK 11 (Part 2) :
  62. Java 11 - Standardized HTTP Client API:
  63. Using Java Flight Recorder With OpenJDK 11:
  64. Should you adopt Java 12 or stick on Java 11? :
  65. Java 11 Released:
  66. Java 11 has Arrived. Is it time to panic?:
  67. Java 11 First Impressions: Are You Ready to Make the Switch?:
  68. Oracle JDK 11 installer & JAR file association on Windows:
  69. Running JAR file on Windows:
  70. Getting Ready for Java 11/JDK 11 and deprecated Java EE Modules being removed JAXB, JAX-WS, JAF, JTA, CORBA: (most will live on as separate JAR libs, available via their project website and/or Maven Central repo)
  71. API Updates in Java SE 11 (18.9) :
  72. APIs to Be Removed From Java 11:
  73. It’s time! Migrating to Java 11 -- Why you should migrate to next Java now!:
  74. Using Java 11 In Production -- Important Things To Know:
  75. Java 11 Features:
  76. New Classes in Java 11:
  77. Java 11's String.repeat() Method in Action - Building repetitive clause in a PreparedStatement with dynamic number of Parameters:
  78. Single File Source Code With Java 11: (bash/batch/shell scripts move over, here comes Java "single-file" directly runnable ".java" files)
  79. Getting Started With Java 11 (If You Are Still Using Java 8):
  80. Migrate Maven Projects to Java 11:
  81. It’s time! Migrating to Java 11:
  82. Move to OpenJDK-11 but compile in Java 8:
  83. What is the --release flag in the Java 9 compiler?:
  84. Java 1z0-815 (JDK11 programmer) Certification: PREPARE | PRACTICE | EXAM
  85. From Java 8 to Java 11 – Quick Guide:
  86. Fun with Java Backwards Compatibility:
  87. Java 12 -- New Features and Enhancements Developers Should Know:
  88. Java 12 Released with Experimental Switch Expressions and Shenandoah GC:
  89. Upgrading from Java 8 to Java 12:
  90. Java 12 - The Teeing Collector:
  91. Variance in Java:
  92. Busy Developers’ Guide to Java 9, 10, 11, 12, 13, and Above:
  93. Java Records (JEP 359):
  94. Java 14 Records -- An Introduction:
  95. Serializable Records:
  96. Serializing Java 14 Records:
  97. Fun with Java Records: | SRC
  98. JDK 14/JEP 305 instanceof Pattern Matching "Smart Casts": httops://
  99. Spring Tips -- Java 14 (or, Can Your Java Do This?):
  100. Java 14 is in Feature-Freeze and Release ramp-down:
  101. Java 14 Released (2020-03-17):
  102. Java 15 / JDK 15: General Availability:
  103. Java 15 - the Story So Far:
  104. New language features (Java 8 to Java 15):
  105. A categorized list of all Java and JVM features since JDK 8 to 15:
  106. Java 15 -- Biased locking a goner, but better things "Loom" ahead (with Project Loom):
  107. Java 15 Released:
  108. 67 New Features in JDK 16:
  109. Records and Pattern Matching for Instanceof Finalized in JDK 16:
  110. JDK16 javac xlint Warning about Default Constructors:
  111. Metaspace in OpenJDK 16:
  112. JDK 16 checking indexes & ranges of longs:
  113. JDK 16 - Stream to List in one easy call:
  114. Going Beyond Java 8 -- Pattern Matching for instanceof in JDK 14 .vs. 16:
  115. What's new in JDK 16 -- Sub-milliseond Max Pause Times:
  116. Looking into the JDK 16 vector API:
  117. What's New in Java 16:
  118. A categorized list of all Java and JVM features since JDK 8 to 16:
  119. New Features in Java 16:
  120. JDK 17 Script Friendly URLs:
  121. What We Know about Java 16 and 17 So Far:
  122. Proposed schedule for JDK 17:
  123. JDK 17 -- JEP 406 - Pattern Matching for switch (preview):
  124. JDK 17 -- Hexadecimal Formatting and Parsing:
  125. JDK 17 -- Monitoring "Deserialization events" to Improve Application Security:
  126. Upgrade to Java 16 or 17:
  127. Inside Java Newscast -- #6 - Java 17 features & development:
  128. Internal JDK Elements Strongly Encapsulated in JDK 17:
  129. Internal packages that will no longer be open by default:
  130. Is Java 17 a Glass Half Full? :
  131. JDK 17 rollout -- JEP Café #2 - Sealed Classes:
  132. OpenJDK -- JEP 416 - Reimplement Core Reflection with "Method Handles":
  133. JDK 17 Security Enhancements:
  134. The Arrival of Java 17!:
  135. Java 17, the Next Long-Term Support Release, is Now Available :
  136. Java 17 released with updates to LTS schedule:
  137. Majority of Java developers plan to transition to Java 17 within the next year:
  138. JDK 18 & JDK 19 - What We Know So Far:
  139. JDK 18 Release Notes:
  140. JDK 18 - The new features in Java 18:
  141. JDK 18 G1/Parallel/Serial GC changes:
  142. JDK 18 Security Enhancements:
  143. All About JDK 18 - Inside Java Newscast #21:
  144. The Arrival of Java 18!: | PODCAST episode
  145. Java 19 - The Best Java Release? - Inside Java Newscast #27:
  146. The Java Language Specification, Third Edition:
  147. The JavaTM Virtual Machine Specification - 2nd Edition:
  148. Working with Manifest Files - The Basics:
  149. Advanced Java Tutorial:
  150. Tabs vs Spaces -- How They Write Java at Google, Twitter, Mozilla and Pied Piper:
  151. JVM Architecture 101 -- Get to Know Your Virtual Machine:
  152. What is the JVM? Introducing the Java Virtual Machine:
  153. JVM Architecture 101 -- Get to Know Your Virtual Machine:
  154. 7 JVM Arguments of Highly Effective Applications:
  155. Using jenv to select Java version on macOS: (NOTE: can be done at the "local" i.e. current Terminal CLI window/prompt, or, "global" to change the default JVM for the entire OS and all applications)
  156. How to fix java.lang.UnsupportedClassVersionError: Unsupported major.minor version:
  158. Setup Java on Linux sample script:
  159. JDK 10:
  160. JDK 11:
  161. Building Java 10+ projects on Travis CI:
  162. Most commonly available JDKs:
  163. Moving the JDK to a Two Year LTS Cadence:
  164. Oracle's March 2018 Java Client Roadmap Update:
  165. Amazon Corretto 8: (Amazon distribution of the OpenJDK)
  166. Amazon Corretto -- Another OpenJDK (and how to use it):
  167. SAP builds its own Java distribution:
  168. OpenJDK vs OracleJDK — which one to use when:
  169. Eliminating Java Update Confusion:
  170. OpenJDK vs. OracleJDK - which are you using?:
  171. OracleJDK .vs. OpenJDK and Java JDK Development Process:
  172. Differences between Oracle JDK and OpenJDK:
  173. OpenJDK - Oracle is better?:
  174. Technically what is the main difference between Oracle JDK and OpenJDK?:
  175. What is the difference between Oracle JDK and Open JDK?:
  176. Is there any advantage of installing OpenJDK instead of Oracle Java Platform, Standard Edition on Ubuntu?:
  177. Return of the "OpenJDK Developers' guide":
  178. Microsoft Introduces Microsoft Build of OpenJDK:
  179. "" example:
  180. The File:
  181. javadoc - The Java API Documentation Generator:
  182. Where to put java package-level information to use by javadoc?:
  183. What’s for?:
  184. Why is useful?:
  185. W3schools -- Packages:
  186. Intro to the Java SecurityManager:
  187. Retrieving a Class Name in Java:
  188. What is the difference between canonical name, simple name and class name in Java Class?:
  189. Core Java, Volume II -- Advanced Features, by Cay S. Horstmann (BOOK): | Ch.9 - Java Platform Module System
  190. Java Modules:
  191. Understanding Java 9 Modules:
  192. Code-First Java Module System Tutorial:
  193. "" tutorial:
  194. Java Magazine -- "More Java 9" (Sep/Oct 2017):
  195. JDK 9 New Features -- Java Module System - Project Jigsaw:
  196. Getting Started with Java 9 Module System:
  197. Gradle -- Building Java 9 Modules:
  198. Java 9 Modularity -- Patterns and Practices for Developing Maintainable Applications (September 2017):
  199. Java 9 Modules (Part 1) -- Introduction:
  200. Java 9 Modules (Part 2) -- IntelliJ and Maven:
  201. Java 9 Modules (Part 3) -- Directives:
  202. Java 9 Modules Tutorial:
  203. Java 9: Step by Step From Zero to Modules (Part 1):
  204. Java 9 New Features: (incldes a simple Modules example)
  205. Migrating the ServiceLoader to the Java 9 module system:
  206. The State of the Module System:
  207. Modules all the way down -- OSGi and the Java Platform Module System:
  208. What "Modules" are about:
  209. Packaging Programs in JAR Files:
  210. wikipedia: JAR (file format)
  211. What is a JAR file?:
  213. How to run a JAR file:
  214. 5 things you should know about JARs (in Java 6+):
  215. Oracle Lesson -- Packaging Programs in JAR Files:
  216. Viewing Contents of a JAR File:
  217. Minimizing the risk of using Java (on the web):
  218. The Java Javascript Engine:
  219. wikipedia: IcedTea
  220. Move over Java Web Start — raise your glass to IcedTea-Web V1.8.1!:
  221. How to get IcedTea browser plugin (OpenJDK browser java plugin) for windows?:
  222. Migration Guide from OracleJDK to OpenJDK (see section on associated Java Desktop alternatives):
  223. Leadership of OpenJDK 8 and OpenJDK 11 Transitions to Red Hat:
  224. Ask Slashdot -- How Dead Is Java?:
  225. “Minecraft has opened up Java to a range of people who probably don’t even realise the skills they have acquired through it”:
  226. Minecraft wiki -- Setting up a server:
  227. Setting up a fresh Minecraft server installation on Linux:
  228. wikipedia: WAR file format (Sun)
  229. EAR packaging:
  230. wikipedia: EAR (file format)
  231. Difference between ear, jar, and war files :
  232. wikipedia: Classpath (Java)
  233. How to Tune Java Garbage Collection:
  234. 5 Coding Hacks to Reduce GC Overhead:
  235. 5 ways to force Java garbage collection:
  236. Jackson Deserialization Vulnerability:
  237. Changing a field's type in recent JDKs:
  238. How to Read a File in Java:
  239. How to read file in Java with NIO – BufferedReader:
  240. Java 8 Stream – Read a file line by line:
  241. Java Streams overview:
  242. Java – Read a file from resources folder:
  243. Java – Read File to String:
  244. Java – How to read a file:
  245. How to read and write Java object to a file:
  246. How to read all files in a folder from Java?:
  247. Java – Write to File:
  248. How to write to file in Java – BufferedWriter:
  249. Java – How to save a String to a File:
  250. Java BufferedWriter class:
  251. Java – How to create and write to a file:
  252. JSoup -- Load a Document from a File:
  253. Convert InputStream to BufferedReader:
  254. How to get an InputStream from a BufferedImage?:
  255. How to save a BufferedImage as a File:
  256. How to convert Byte Array to Image in java?:
  257. JavaDocs -- Serializable:
  258. What is object serialization?:
  259. Serialization and Deserialization in Java with Example:
  260. Java object serialization - Tutorial:
  261. Java - Serialization:
  262. Serializing an Object via a Client/Server Connection:
  263. InsideJava -- Episode 16 “Let's Discuss JDK and Networking” with Michael McMahon & Daniel Fuchs: (JDK 11+ new HTTPClient)
  264. Networking I/O with Virtual Threads - Under the hood:
  265. Java – How to convert Bytes to Hex:
  266. Don’t Extract Everything Into a Method:
  267. A Guide to the Static Keyword in Java:
  268. Concurrency:
  269. A Bird’s-Eye View on Java Concurrency Frameworks: (RxJava, Akka, Disruptor, and ExecutorService)
  270. What Every Java Developer Should Know About Thread, Runnable, and Thread Pool
  271. Java Thread example:
  272. Thread Life Cycle in Java – Thread States in Java:
  273. Multithreading in Java:
  274. Common Concurrency Pitfalls in Java:
  275. Java - Thread Synchronization:
  276. Java.lang.Thread.sleep() Method:
  277. How can we stop a thread in Java?:
  278. Java Timer, TimerTask, Reminder Class Tutorial with Example:
  279. Java Multithreading - Threadsafe Counter:
  280. Create a counter that increments once a second until a given number of seconds is reached :
  281. Using wait/notify vs Thread.sleep() in Java:
  282. Five Ways to Update Fields in a Thread Safe Way - Part 1:
  283. How to Run Multiple Threads Concurrently in Java? ExecutorService Approach:
  284. Introducing Threads in Socket Programming in Java: (client-server example designed for handling multiple simultaneous clients)
  285. Timer in Java Thread:
  286. Java concurrency (multi-threading) - tutorial:
  287. Java Multithreading & Concurrency Interview Questions and Answers:
  288. ThreadPoolExecutor – Java Thread Pool Example:
  289. Using Thread Dumps:
  290. TutorialsPoint -- Java RMI - Quick Guide:
  291. Remote Method Invocation in Java:
  292. Remote Method Invocation (RMI) overview:
  293. Java RMI basic tutorial:
  294. JDK 7, Getting Started Using Java™ RMI (HelloWorld client/server example):
  295. wikipedia: Common_Object_Request_Broker_Architecture
  296. CORBA is dead?!: (hardly dead, but falling out of use as the first "go-to strategy" for application integration in favour of SOA, APIs, etc)
  297. Are CORBA and RMI "dead"?:
  298. Is CORBA still alive? What about ACE?:!topic/comp.object.corba/jD6KpFPxWPw
  299. The significance of Java RMI (and CORBA) please?:
  300. Is CORBA legacy?:
  301. Time Synchronization in Distributed Systems:
  302. Synchronizing clients with a server and with each other (in Distributed Applications):
  303. Guide to JNI (Java Native Interface):
  304. Call a C function from Java:
  305. Does Java 18 finally have a better alternative to JNI?:
  306. Object-Oriented Programming:
  307. OOP Basics:
  308. Inheritance, Polymorphism, and Abstract Classes:
  309. Oracle docs -- Java OOP - Declaring Member Variables:
  310. In Java, what’s the difference between method overloading and method overriding?:
  311. wikipedia: Abstraction
  312. wikipedia: Inheritance (object-oriented programming)
  313. What Is Inheritance?:
  314. Inheritance .vs. Composition:
  315. wikipedia: Polymorphism (computer science)
  316. wikipedia: Polymorphism in object-oriented programming
  317. How my Dog learned Polymorphism:
  318. What is polymorphism in Java? Method overloading or overriding?:
  319. How should I have explained the difference between an Interface and an Abstract class?:
  320. What is the point of having every service class have an interface?:
  321. Time To Really Learn Generics -- A Java 8 Perspective:
  322. Learning Java, 4th Edition (2013) -- Ch.8 Generics - Generic Methods:
  323. Java Generic Methods:
  324. Get Started with Java:
  325. OCP Certification – Advanced Java Class Design:
  326. Java - Use polymorphism or bounded type parameters:
  327. Jackson, XML & JSON parsing library -- (uses generics to dynamically map passed in data to corresponding Getter/Setter methods in bakcing Beans/Models)
  328. Generic Constructors in Java:
  329. Working With Java 8 Optionals:
  330. Tired of Null Pointer Exceptions? Consider Using Java SE 8's Optional:
  331. Should Java 8 getters return nullable optional Optional type?
  332. How to Write Better Code with Java 8’s Optional:
  333. Working on Null Elegantly with Java Optional:
  334. How to use Optionals In Java:
  335. 26 Reasons Why Using Optional Correctly Is Not Optional:
  336. Guide To Optional (available in Java 8+):
  337. Java 8 Optional - Replace your get() calls:
  338. What's the difference between Objects.requireNonNullElse() and Optional.ofNullable().orElse() methods?:
  339. Java's Optional Does Not Supplant All Traditional if-null-else or if-not-null-else Checks:
  340. How Java Optional Evolved Over Time:
  341. var keyword in Java:
  342. "var" keyword in Java - examples:
  343. Java 11 Local Variable Syntax for Lambda Parameters:
  344. Collections in Java (overview):
  345. Java Sort a List by multiple attributes example:
  346. Eclipse Collections 11.0.0 Features New APIs and Functionality:
  347. Java language basics: (good examples of List, ArrayLists, etc)
  348. Finding the Differences Between Two Lists in Java:
  349. How to compare two ArrayLists in Java: (equality check, contains specific items, find additional items, missing items, common items)
  350. How to remove everything from an ArrayList in Java but the first element:
  351. Java – Check if Array contains a certain value?:
  352. How to iterate through a Map in Java?:
  353. How to get Map’s key from value in Java:
  354. 10 Examples of HashMap in Java - Programming Tutorial:
  355. Cannot cast from Map<String,Object> to Map<String,List<Map<String,String>>>:
  356. want to create a map<String , Object> ,Object can be String and can be class Object:
  357. List<SomeObject> to Map<Integer, SomeObject> (where Map has a numerical Key and the original Object):
  358. List<String> to Map<String, Object> with Key Mapper and Value Mapper:
  359. Java 8 Streams peek() API:
  360. An Introduction to Functional Programming in Java 8 (Part 3) -- Streams:
  361. Java 8 Stream -- concat, count, sorted and distinct Example:
  362. Null safe date comparator for sorting in Java 8 Stream:
  363. Java performance tutorial – How fast are the Java 8 streams?:
  364. How to Properly Debug Java Streams:
  365. How to debug stream().map(…) with lambda expressions?:
  366. IntelliJ -- Analyze Java Stream operations:
  367. How to debug Java 8 Stream Pipeline - peek() method tutorial:
  368. Stream.reduce & Stream.collect methods:
  369. How do I determine whether an array contains a particular value in Java?:
  370. Java Stream API was Broken Before JDK10:
  371. Java 8 Streams -- An Intro to Filter, Map and Reduce Operations:
  372. Java Stream collect() method Examples:
  373. How can I get a List from some class properties with Java 8 Stream?:
  374. 10 Examples of forEach() method in Java 8:
  375. Java 8 Friday -- 10 Subtle Mistakes When Using the Streams API:
  376. String Operations with Java Streams:
  377. How to Iterate Over a Stream with Indices:
  378. Java 8 -- Accumulate the elements of a Stream using Collectors:
  379. A Guide to Streams in Java 8 -- In-Depth Tutorial with Examples:
  380. Java Streams Overview, Part I:
  381. How to convert a Map to List in Java?:
  382. Java 8 - How to convert String to Map<String,String>?:
  383. Java 8 - Convert Map to List using Collectors.toList() Example:
  384. Convert a List to a Comma-Separated String in Java 8:
  385. Check if one List object contains element from the other:
  386. Java 8 – How to sort list with stream.sorted():
  387. Processing Files With Java 8 Streams:
  388. 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)
  389. Think Twice Before Using Java 8 Parallel Streams:
  390. Guide to mapMulti in Stream API: (with real-world Artist' to Album association examples)
  391. A real-world (ShoppingCart) example of a Stream Collector:
  392. How to Properly Debug Java Streams (VIDEO):
  393. wikipedia: Anonymous function
  394. Core Java Volume I — Fundamentals, 11th ed. by Cay S. Horstmann (BOOK): | Ch.6-Interfaces, Lambda Expressions & Inner Classes
  395. Start Using Java Lambda Expressions & Streams:
  396. How to start working with Lambda Expressions in Java:
  397. Java 8 – Powerful Comparison with Lambdas | VIDEOS:
  398. Why the restriction on local variable capture?:
  399. Java local vs instance variable access speed:
  400. Why are lambda expressions being added to Java?:
  401. Why do java 8 lambdas allow access to non-final class variables?:
  402. Modifying local variable from inside lambda:
  403. Java 8 – Powerful Comparison with Lambdas:
  404. Streams tutorial:
  405. Lambda Expressions and Functional Interfaces -- Tips and Best Practices:
  406. Introduction To Pragmatic Functional Java (and how to refactor from traditional imperative coding style):
  407. An Introduction to Atomic Variables in Java:
  408. How AtomicReference Works:
  409. Java AtomicReference Example:
  410. AtomicReference tutorial:
  411. Java Lambda Expressions:
  412. How do you assign a lambda to a variable in Java 8?:
  413. How to convert a String to a lambda expression?:
  414. Java Lambda Expressions Basics:
  415. Hacking Lambda Expressions in Java:
  416. lambdaFromString lib:
  417. Lambda Expressions in Java 8:
  418. Java Lambda Expressions:
  419. Java 8 Lambda Limitations -- Closures:
  420. Lambda Expressions & Functional Interfaces -- Tips & Best Practices:
  421. Java Lambda Expressions:
  422. Modifying local variable from inside lambda:
  423. Using Java 8 Lambdas Efficiently:
  424. Exception Handling in Java Streams:
  425. How to catch splitted String in Java Stream:
  426. How to convert comma-separated String to List?:
  427. Java 8+ – Convert Stream to List:
  428. How to convert a Stream into a Map in Java:
  429. HashMap using Streams & substring:
  430. Java 8+ – Join or append stream of strings:
  431. JDK 8 JavaDocs -- Stream - Collectors:
  432. Oracle technical articles -- Processing Data with Java SE 8 Streams - Part 1:
  433. Oracle technical articles -- Processing Data with Java SE 8 Streams - Part 2:
  434. Java streams - "filter" in a lambda:
  435. Java "CompletableFuture" Tutorial with Examples:
  436. Writing Functional Interfaces in Java:
  437. Lambda Expressions:
  438. Java Records vs. Lombok:
  439. Introduction to Records:
  440. Java "record" - practical use-case examples:
  441. A look into what you can and cannot do in Java record classes:
  442. wikipedia: Java Management Extensions
  443. wikipedia: Java Database Connectivity
  444. JDBC CRUD ( Create, Read, Update and Delete) example: http;//
  445. MySQL and Java JDBC - Tutorial:
  446. An Introduction to JDBC, Part 3:
  447. Spring Data JDBC Generic DAO Implementation - Most Lightweight ORM Ever:
  448. What You Didn't Know About JDBC Batch: (Improvement times of Batching queries, by DBMS)
  449. SQL DECIMAL to Java Number:
  450. How To Map The Date And Time API with JPA 2.2:
  451. Using “LIKE” wildcard in PreparedStatement:
  452. Configuring JDBC in TomEE:
  453. MySQL JDBC over SSL problem:
  454. MySQL JDBC Statement Caching:
  455. Persisting fast in database - JDBC:
  456. What are the advantages of stored procedures? (and how to call them from Java):
  457. Difference between Statement vs PreparedStatement vs CallableStatement in Java: :
  458. AceQL: | Server - SRC | Client - SRC
  459. AceQL Releases Open-Source JDBC-over-HTTP Driver:
  460. JDBC - ResultSetMetadata:
  461. Sun Java Developer Network - EJB:
  462. wikipedia: EJB
  463. What Is an Entity Bean?:
  464. What Is a Message-Driven Bean?:
  465. 3 Types of EJB:
  466. What's Wrong with the EJB 2 Specification?:
  467. Enterprise JavaBeans Fundamentals:
  468. EJB Transaction:
  469. Injection of DataSource Example:
  470. Creating and Using Contexts and Dependency Injection (CDI) Events:
  471. EJB Backend with NetBeans RCP Frontend on Maven:
  472. The case against annotations:
  473. An Introduction to Annotations and Annotation Processing in Java:
  474. JNLP spec:
  475. Java Network Launch Protocol (JNLP) Support:
  476. JNLP API Examples:
  477. Old link for JNLP demos: (*DOWN*)
  478. OpenJNLP:
  479. Deploying Software with JNLP and Java Web Start:
  480. What is Java Web Start and how is it launched? :
  481. Running a Java Web Start Application:
  482. Deploying a Java Web Start Application:
  483. Java Web Start & JNLP:
  484. Java WebStart Is Dead -- What Should We Do Now?:
  485. Java Web Start will die! -- OpenWebStart in inubation:
  486. What to do when Java SE 11 removes JNLP:
  487. jPRO - Java in the Browser (once again): | DOCS | DEMO | SRC (cross-browser plugin/extension/add-on, similar to OpenWebStart but with commercial support/pricing)
  488. Structure of the JNLP file:
  489. Installing a Java Application as a Windows Service:
  490. What is the status of SwingLabs (SwingX) post acquisition:
  491. swing-bug 0.4 -- Making JCarousel sexier with Effects:
  492. BlogOfBug -- Improved Dock Panel and Coder Stupidity:
  493. BlogOfBug -- Updates to JCarouselMenu and some bug fixes:
  494. BlogOfBug -- Updating Blog Jar and New Features to Carousel:
  495. :
  496. BlogOfBug -- Carousel Menu (a la Apple TV):
  497. BlogOfBug -- Java Carousel Part 3 - Reflected Images Love Carousels:
  498. BlogOfBug -- Java Carousel Part 2 - Creating a Carousel Component:
  499. BlogOfBug -- Java Carousel Part 1 - Layout and Animation:
  500. BlogOfBug -- Java Dock Component:
  501. jlGUI -- Java Music Player: (Winamp clone in Java)
  502. Griffon framework: (multi-paradigm Desktop Application framework inspired by Grails for Groovy-based WebApps)
  503. How to center a Swing frame or dialog:
  504. A Visual Guide to Layout Managers:
  505. Swing -- Nimbus Cross-platform Look & Feel:
  506. Handling Images in a Java GUI Application:
  507. Designing an Advanced Java Form Using the GridBag Customizer:
  508. Connecting to Oracle Database from NetBeans IDE 7.0:
  509. How do I add key listener event handler to JTextField?:
  510. React to the ENTER key in a Textfield:
  511. Programmatically clicking a GUI button in Java Swing:
  512. Writing Your own Twitter Application Using Java, Swing, and Twitter4j:
  513. Minesweeper In Java (Swing + AWT):
  514. Java Programming Tutorial -- Programming Graphical User Interface (GUI):
  515. What Future Java Releases Mean for Legacy Desktop Apps:
  516. Java Swing Browser GUI created indirectly on a PDA:
  518. Introduction to Event Listeners:
  519. Swing CardLayout:
  520. How to add row in JTable?:
  521. A JButton listener example:
  522. JPanel doesn't update until resize Jframe:
  523. Retrieving a double from a JTextArea while solving for X:
  524. Check valid enum values before using enum:
  525. Anonymous Classes in Java:
  526. [Solved] No main manifest attribute, in jar Maven and SpringBoot: (what to do for "runnable/executable JARs" .vs. regular compiled JARs
  527. The state of JVM desktop frameworks - intro:
  528. The state of JVM desktop frameworks - Swing: | SRC
  529. JavaFX:
  530. Google App Engine and Managed VM's -- Java Framework support & integrations: (table summarizing frameworks that used to not work but currently do work i Google's AppEngine - Cloud Application Hosting Service)
  531. Why and when you should use JPA:
  532. JavaEE 5+ -- EntityManager Interface:
  533. Using a Data Source with JPA (VIDEO):
  534. Using EJB Lite and JPA in a Java SE Application:
  535. Looking Forward to JPA 2.0 -- What's New:
  536. Looking Forward To JPA 2.0 - Part 2:
  537. The Top 5 New Annotations in JPA 2:
  538. The abstract schema type is unknown:
  539. PRO EJB 3.0 attention Mike Keith and Merrick Schincariol:
  540. Managing databases with Eclipse and the Database Tools tutorial:
  541. Eclipse plugins -- Dali - JPA tool user guide: (NOTE: now integrated into Eclipse Data Tools)
  542. Creating JPA entity beans in a JPA project from database tables:
  543. The Ultimate Guide on Client-Generated IDs in JPA Entities:
  544. The Ultimate Guide on Composite IDs in JPA Entities:
  545. Object-Relational Mappings - Generating JPA Entities:
  546. Creating JPA entity beans from database tables:
  547. Can I auto create database from JPA?:
  548. JPQL tutorial:
  549. A Beginner's Guide to JPA and Hibernate Cascade Types:
  550. Opinion Piece - How JPA 2.1 has become the new EJB 2.0 thanks to Annotations:
  551. Java EE 7 - Applying JPA to Stored Procedures:
  552. A Beginner’s Guide to JPA’s "persistence.xml":
  553. Optimistic locking in JPA/Hibernate:
  554. Live with your SQL-fetish and choose the right tool for the job :
  555. 5 Things Beginners Need to Know Before Using JPA / Hibernate / EclipseLink:
  556. What is the Difference Between JPA and Hibernate?:
  557. What is the Difference Between OpenJPA, EclipseLink & Hibernate?:
  558. JPA tutorials:
  559. Introduction to JPA & Hibernate including examples:
  560. Java Persistence API (JPA) Step By Step (SLIDES):
  561. JPA Performance Benchmark (JPAB):
  562. JPA Join Types:
  563. JPA & SQL injection prevention:
  564. CapCourse #161 -- The Java Persistence API: | DOWNLOAD
  565. CapCourse #162 -- Java EE Persistence:
  566. A JPQL Terminal:
  567. JSF, JPA, and EJB:
  568. Configuring and mapping database tables to JPA entities:
  569. JPA Tutorial - JPA OneToMany Mapping Table Example:
  570. JPA Set Mapping:
  571. Best Practices for Many-To-One and One-To-Many Association Mappings: http://
  572. The best way to map a @OneToMany relationship with JPA and Hibernate:
  573. @ManyToOne JPA & Hibernate association best practices:
  574. JPA -- WHERE clause (JPQL / Criteria API):
  575. JPA counting its subclass for one to many relationship:
  576. JPA Tutorial - JPA Query COUNT Example:
  577. JPA Tutorial - JPA Query COUNT Example:
  578. JPA Tutorial - JPA OneToMany Mapping Table Example:
  579. JPA Tutorial - JPA Query Date Parameters Example:
  580. Ternary Associations – Modelling Associations between 3 Entities:
  581. How to map Date and Timestamp with JPA and Hibernate:
  582. How to map a PostgreSQL ARRAY (enum) to a Java List with JPA and Hibernate:
  583. JPA Criteria Metamodel Generation and Usage Guide:
  584. How to change an attribute before INSERT and UPDATE:
  585. The best way to use Java 14+ Records with JPA & Hibernate:
  586. Java Records – How to use them with Hibernate and JPA:
  587. JDK 14 Records for Spring:
  588. Why Java's Records Are Better* Than Lombok's @Data and Kotlin's Data Classes:
  589. Spring Data JPA -- Query Projections:
  590. Implement a Distributed Database to Your Java Application that's JPA-compatible (using "Interference Open Cluster" project, aka. io.cluster): | SRC
  591. JPA AttributeConverter – A Beginner’s Guide:
  592. JPA "Association Fetching" validator:
  593. Querying JPA Entities with JPQL and Native SQL:
  594. Migrating from Hibernate Criteria Search API to JPA Criteria API:
  595. Migrating from JPA 2.x to 3.0:
  596. Netbeans plugins -- Jeddict - JPA Modeler:
  597. MinuteProject -- JPA1/JPA2 Swing Desktop GUI - Reverse Engineering Tool:
  598. MinuteProject 4.x -- JPA2 -- Lazuly showcase:
  599. IntelliJ -- JPA Buddy plugin:
  600. How to implement an AttributeConverter to support custom types:
  601. JPA 2.0 - Why AccessType is Relevant:
  602. Persisting fast in database - JPA:
  603. Can we use JPA without Hibernate:
  605. Hibernate Made Easy:
  606. @DiscriminatorFormular – Modeling Single Table Inheritance Without a Discriminator:
  607. JPetStore lives on as the official example of typical usage of iBatis framework:
  609. EclipseLink -- Annotation Extensions Reference:
  610. JPA Entities and/vs DTOs:
  611. The best way to map a projection query to a DTO (Data Transfer Object) with JPA and Hibernate:
  612. Entities or DTOs – When should you use which projection?:
  613. What is DTO equivalent term for objects returned from DAL?:
  614. Data Transfer Object (DTO) and Data Access Objects (DAO) concepts and Model View Controller (MVC):
  615. Alternatives to 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)
  616. DataNucleus Access Platform 3.1:
  617. CXF package names (for use with Java 1.9+):
  618. Embracing a Modular Java Platform -- Apache CXF on Java 10:
  619. ROME RSS Parser (former Sun page):
  620. jEnv docs -- Manage your Java environment:
  621. Configuring jEnv the "right" way:
  622. Managing Multiple JDK Installations With jEnv:
  623. Build Java Application for Mobile Devices:
  624. Will Google's Android ever support .NET:
  625. The Most Popular Java Tools for Every Phase of Development:
  626. How do I add the Java API documentation to Eclipse?:
  627. JDK 7 -- javadoc - The Java API Documentation Generator:
  628. How to Write Doc Comments for the Javadoc Tool:
  629. How to write, generate and use Javadoc in Eclipse?:
  630. java.util.formatter: (good JavaDoc example)
  631. Ant build tool -- (good JavaDoc example)
  632. Google Guava lib - (good JavaDoc example)
  633. Good example of Javadoc:
  634. How to Write Doc Comments for the Javadoc Tool: (old Sun link)
  635. Usage of @see in JavaDoc?:
  636. Javadoc Tutorial:
  637. How do I change the (default/auto-generated) Javadocs template generated in Eclipse?:
  638. Using the Generate Javadoc Wizard (in RAD/Eclipse):
  639. Why can't I generate javadoc for this specific project? No error message:
  640. Can't generate javadoc in eclipse:
  641. JDK - Collections class (clean Javadoc example):
  642. Apache Ant - DefaultLogger (clean Javadoc example):
  643. Apache Ant - DirectoryScanner (clean Javadoc example):
  644. Java - Documentation Comments:
  645. How Do I Document Packages in Java?:
  646. How to insert creation date in JavaDoc:
  647. Java's @version %I%, %G% auto-generation 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)
  648. Inheriting Javadoc Method Comments: (using the {@inheritDoc} template)
  649. A Guide to Formatting Code Snippets in Javadoc: (using {@code code goes here} markup, with <pre> tags if indentation and whitespace needs to be preserved)
  650. Linking to an external URL in Javadoc?:
  651. JEP 413 -- Code Snippets in Java API Documentation: (linkable, regex-ready replacement for "inline code" within comments typically using "<pre>" tags and/or "@code" comments)
  652. New Javadoc Tags @apiNote, @implSpec, and @implNote:
  653. Linking to an External URL in Javadoc:
  654. Add a Reference to Method Parameters in Javadoc:
  655. JDK 18 -- Code Snippets in Java API Documentation:
  656. Sip of Java - JavaDoc Code Snippet API:
  657. Manage multiple Java SDKs with SDKMAN! with ease:
  658. The JVM Architecture Explained:
  659. Introduction to Java Bytecode:
  660. Snyk JVM Ecosystem Report 2021 Finds Increased Usage of Java 11 in Production:
  661. State of the Java Ecosystem Report from New Relic:
  662. A Picture of Java in 2020:
  663. The State of Java in 2019:
  664. JVM Ecosystem Report 2018: | PDF
  665. The State of Java in 2018:
  666. What is the difference between public, protected, package-private and private in Java?:
  667. Invoking a Private Method in Java:
  668. Why doGet(), doPost() Methods are “protected”?:
  669. Oracle Java specs -- Chapter 4 - The class File Format:
  670. Java – How to list all files in a directory?:
  671. Java, List only subdirectories from a directory, not files:
  672. Java NIO, get all subfolders of some folder:
  673. Quickly creating URIs with UriBuilder (BuilderPattern):
  674. Java SE 6 API Docs - Properties class:
  675. How to read a file from resources folder in properties file:
  676. Java's “” for Windows 10?:
  677. StringBuffer to File - Need Example:
  678. How to use comparison operators like >, =, < on BigDecimal:
  679. Arrays in Java:
  680. Guava's Objects Class -- Equals, HashCode, and ToString:
  681. How to convert Object array to String array in Java:
  682. Java Program to Check if An Array Contains a Given Value:
  683. Java Recursion:
  684. Recursion in Java:
  685. Java Fibonacci examples:
  686. Java - format double value as dollar amount:
  687. I need to convert an int variable to double:
  688. Advanced Java Tutorial list:
  689. Invoke methods of an object using reflection:
  690. Java dynamic function (method) calling through Generics/Reflection:
  691. How to pass a type as a method parameter in Java:
  692. Java is Pass-by-Value, Dammit!:
  693. Calling a method named “string” at runtime in Java and C:
  694. Java Reflection example tutorial:
  695. Non-Repeating Random(s)
  696. Generate random numbers :
  697. Java Write To File:
  698. How to write to file in Java using BufferedWriter:
  699. Java – Write to File:
  700. Easy way to write contents of a Java InputStream to an OutputStream:
  701. How to convert InputStream to OutputStream in Java:
  702. Managing Metadata (File and File Store Attributes):
  703. How can I extract meta data from various video file formats?:
  704. Java library to check a video's metadata (if it's 1080p, 720p, etc):
  705. Playing video (in Java) using JMF, JavaFX or VLCj:
  706. Is there a Java API for mp4 files?:
  707. Inspect a video file with xuggler Java lib:
  708. Extracting metadata of a Media files with JAVE:
  709. How to Extract Meta-data from Media file in Android:
  710. Getting Started with FFMPEG-Java:
  711. jNotify for file directory monitoring/change listening:
  712. How to watch the file system for changes in Java 7 (JDK 7) :
  714. AJAX file upload progress for Java using commons fileupload and prototype:
  715. AJAX file upload example with JSP:
  716. Handling Form-based File Upload with Java Servlet or JSP (that supports WAP):
  717. Java regular expression patterns:
  718. How to split Java String with delimeter comma, space, new line, tab?:
  719. When to use AtomicReference in Java?:
  720. Red Hat replaces Oracle as OpenJDK 8, OpenJDK 11 steward:
  721. Java Version 1.5.0 or 5.0?:
  722. Introduction to Java 5 (SLIDES):
  723. Java 8 Programming Tutorial -- Java with Eclipse - Setup & Getting Started (SLIDES):
  724. Robotic recon for human exploration -- Method, assessment, and lessons learned: (Java usage at NASA)
  725. Java -- Curiosity Mars rover:
  726. JDK & macOS:
  727. MacOS Java version handling script:
  728. The Anatomy of ct.sym — How javac Ensures Backwards Compatibility:
  729. Java Application Remote Debugging:
  730. jmap - Memory Map:
  731. Error: Could not find or load main class in Java:
  732. How to Set Classpath for Java on Windows and Linux:
  733. Error -- Could not find or load main class:
  734. How to Run a JAR file from Command Prompt - Windows and UNIX:
  735. Oracle docs -- Defining Methods:
  736. Overriding vs. Overloading in Java:
  737. Object Ordering:
  738. Java Socket Programming Examples:
  739. Fixing 7 Common Java Exception Handling Mistakes:
  740. Best way to check whether a certain exception type was the cause (of a cause, etc ...) in a nested exception?::
  741. Best Practice -- Catching and re-throwing Java Exceptions:
  743. Exception Handling & Assertion: http:/
  744. Exceptions in Java:
  745. Java NullPointerException Avoidance and Enhancement Tactics:
  746. How to resolve "java.lang.NullPointerException":
  747. A small tip on String objects to avoid NullPointerException:
  748. How to Avoid NullPointerExceptions (NPE)?:
  749. How to check if array element is null to avoid NullPointerException in Java:
  750. How to check whether an Integer is null or zero in Java?:
  751. Converting a "Stack Trace" to a String in Java:
  752. Declaring a RandomAccessFile object inside a try block gives resource leak warning but declaring it outside does not?:
  753. Method:
  754. Java BigInteger example:
  755. BigDecimal .vs. BigInteger:
  756. Why You Should Never Use Float and Double for Monetary Calculations:
  757. Double vs. BigDecimal?:
  758. Caution -- Double to BigDecimal in Java:
  759. What Every Computer Scientist Should Know About Floating-Point Arithmetic:

See Also

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