Misplaced Pages

Apache Commons

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

The Apache Commons is a project of the Apache Software Foundation , formerly under the Jakarta Project . The purpose of the Commons is to provide reusable, open source Java software. The Commons is composed of three parts: proper, sandbox, and dormant.

#275724

58-726: The Commons Proper is dedicated to creating and maintaining reusable Java components. The Commons Proper is a place for collaboration and sharing, where developers from throughout the Apache community can work together on projects to be shared by Apache projects and Apache users. Commons developers will make an effort to ensure that their components have minimal dependencies on other software libraries , so that these components can be deployed easily. In addition, Commons components will keep their interfaces as stable as possible, so that Apache users, as well as other Apache projects, can implement these components without having to worry about changes in

116-436: A memory model describes the interactions of threads through memory and their shared use of the data . A memory model allows a compiler to perform many important optimizations. Compiler optimizations like loop fusion move statements in the program, which can influence the order of read and write operations of potentially shared variables . Changes in the ordering of reads and writes can cause race conditions . Without

174-683: A trademark search revealed that Oak Technology used the name Oak . Sun priced Java licenses below cost to gain market share. Although Java 1.0a became available for download in 1994, the first public release of Java, Java 1.0a2 with the HotJava browser, came on May 23, 1995, announced by Gage at the SunWorld conference. Accompanying Gage's announcement, Marc Andreessen , Executive Vice President of Netscape Communications Corporation , unexpectedly announced that Netscape browsers would include Java support. On January 9, 1996, Sun Microsystems formed

232-446: A virtual machine ), a compiler and a set of libraries ; there may also be additional servers and alternative libraries that depend on the requirements. Java platforms have been implemented for a wide variety of hardware and operating systems with a view to enable Java programs to run identically on all of them. The Java platform consists of several programs, each of which provides a portion of its overall capabilities. For example,

290-650: A challenging and error-prone task. The team also worried about the C++ language's lack of portable facilities for security, distributed programming , and threading . Finally, they wanted a platform that would port easily to all types of devices. Bill Joy had envisioned a new language combining Mesa and C. In a paper called Further , he proposed to Sun that its engineers should produce an object-oriented environment based on C++. Initially, Gosling attempted to modify and extend C++ (a proposed development that he referred to as "C++ ++ --") but soon abandoned that in favor of creating

348-403: A higher degree of freedom when applying optimizations: the compiler needs to make sure only that the values of (potentially shared) variables at synchronization barriers are guaranteed to be the same in both the optimized and unoptimized code. In particular, reordering statements in a block of code that contains no synchronization barrier is assumed to be safe by the compiler. Most research in

406-399: A lock by entering a synchronized block or method. The memory model stipulates that changes to the values of shared variables only need to be made visible to other threads when such a synchronization barrier is reached. Moreover, the entire notion of a race condition is defined over the order of operations with respect to these memory barriers. These semantics then give optimizing compilers

464-407: A lot of leeway to implementors regarding the implementation details. Since Java 1.3, JRE from Oracle contains a JVM called HotSpot. It has been designed to be a high-performance JVM. To speed-up code execution, HotSpot relies on just-in-time compilation. To speed-up object allocation and garbage collection, HotSpot uses generational heap. The Java virtual machine heap is the area of memory used by

522-410: A memory model, a compiler may not apply such optimizations to multi-threaded programs at all, or it may apply optimizations that are incompatible with multi-threading, leading to bugs. Modern programming languages like Java therefore implement a memory model. The memory model specifies synchronization barriers that are established via special, well-defined synchronization operations such as acquiring

580-521: A new language, which he called Oak , after the tree that stood just outside his office. By the summer of 1992, the team could demonstrate portions of the new platform, including the Green OS , the Oak language, the libraries, and the hardware. Their first demonstration, on September 3, 1992, focused on building a personal digital assistant (PDA) device named Star7 that had a graphical interface and

638-615: A proposal for a set-top box platform. However, the cable industry felt that their platform gave too much control to the user, so Firstperson lost their bid to SGI . An additional deal with The 3DO Company for a set-top box also failed to materialize. Unable to generate interest within the television industry, the company was rolled back into Sun. In June and July 1994 – after three days of brainstorming with John Gage (the Director of Science for Sun), Gosling, Joy, Naughton, Wayne Rosing , and Eric Schmidt  –

SECTION 10

#1732780660276

696-475: A short delay during loading and once they have "warmed up" by being all or mostly JIT-compiled, tend to run about as fast as native programs. Since JRE version 1.2, Sun's JVM implementation has included a just-in-time compiler instead of an interpreter. Although Java programs are cross-platform or platform independent, the code of the Java Virtual Machines (JVM) that execute these programs

754-616: A small office on Sand Hill Road in Menlo Park, California . They aimed to develop new technology for programming next-generation smart appliances, which Sun expected to offer major new opportunities. The team originally considered using C++, but rejected it for several reasons. Because they were developing an embedded system with limited resources, they decided that C++ needed too much memory and that its complexity led to developer errors. The language's lack of garbage collection meant that programmers had to manually manage system memory,

812-502: A smart agent called "Duke" to assist the user. In November of that year, the Green Project was spun off to become Firstperson , a wholly owned subsidiary of Sun Microsystems, and the team relocated to Palo Alto, California . The Firstperson team had an interest in building highly interactive devices, and when Time Warner issued a request for proposal (RFP) for a set-top box , Firstperson changed their target and responded with

870-505: A standard interface for the Java applications to perform those tasks. Finally, when some underlying platform does not support all of the features a Java application expects, the class libraries work to gracefully handle the absent components, either by emulation to provide a substitute, or at least by providing a consistent way to check for the presence of a specific feature. The word "Java", alone, usually refers to Java programming language that

928-644: A supported version. Oracle released the last free-for-commercial-use public update for the legacy Java 8 LTS in January 2019, and will continue to support Java 8 with public updates for personal use indefinitely. Oracle extended support for Java 6 ended in December 2018. The Java platform is a suite of programs that facilitate developing and running programs written in the Java programming language. A Java platform includes an execution engine (called

986-537: A very simple memory model where objects are allocated on the heap (while some implementations e.g. all currently supported by Oracle, may use escape analysis optimization to allocate on the stack instead) and all variables of object types are references . Memory management is handled through integrated automatic garbage collection performed by the JVM. The latest version is Java 22 released in March 2024, and

1044-489: Is a JIT (Just In Time) compiler within the Java Virtual Machine , or JVM. The JIT compiler translates the Java bytecode into native processor instructions at run-time and caches the native code in memory during execution. The use of bytecode as an intermediate language permits Java programs to run on any platform that has a virtual machine available. The use of a JIT compiler means that Java applications, after

1102-610: Is a set of computer software and specifications that provides a software platform for developing application software and deploying it in a cross-platform computing environment. Java is used in a wide variety of computing platforms from embedded devices and mobile phones to enterprise servers and supercomputers . Java applets , which are less common than standalone Java applications, were commonly run in secure, sandboxed environments to provide many features of native applications through being embedded in HTML pages. Writing in

1160-604: Is best to assume that these components will not be released in the near future. Goyal, Vikram (2003), Using the Jakarta Commons, Part I , retrieved August 13, 2006 Java (software platform) 21.0.5 LTS (October 15, 2024 ; 40 days ago  ( 2024-10-15 ) ) [±] 17.0.13 LTS (October 15, 2024 ; 40 days ago  ( 2024-10-15 ) ) [±] 11.0.25 LTS (October 15, 2024 ; 40 days ago  ( 2024-10-15 ) ) [±] Java

1218-853: Is not. Every supported operating platform has its own JVM. The Java Development Kit (JDK) is a distribution of Java technology by Oracle Corporation . It implements the Java Language Specification (JLS) and the Java Virtual Machine Specification (JVMS) and provides the Standard Edition (SE) of the Java Application Programming Interface (API). It is derivative of the community driven OpenJDK which Oracle stewards. It provides software for working with Java applications. Examples of included software are

SECTION 20

#1732780660276

1276-415: Is provided to simplify the programmer's job. This code is typically provided as a set of dynamically loadable libraries that applications can call at runtime. Because the Java platform is not dependent on any specific operating system, applications cannot rely on any of the pre-existing OS libraries. Instead, the Java platform provides a comprehensive set of its own standard class libraries containing many of

1334-454: Is similar in purpose to the JVM. Like the JVM, the CLR provides memory management through automatic garbage collection, and allows .NET byte code to run on multiple operating systems. .NET included a Java-like language first named J++ , then called Visual J# that was incompatible with the Java specification. It was discontinued 2007, and support for it ended in 2015. The JVM specification gives

1392-503: The .NET Framework , appearing since 2002, which incorporates many of the successful aspects of Java. .NET was built from the ground-up to support multiple programming languages, while the Java platform was initially built to support only the Java language, although many other languages have been made for JVM since. Like Java, .NET languages compile to byte code and are executed by the Common Language Runtime (CLR), which

1450-547: The Java compiler , which converts Java source code into Java bytecode (an intermediate language for the JVM), is provided as part of the Java Development Kit (JDK). The Java Runtime Environment (JRE), complementing the JVM with a just-in-time (JIT) compiler , converts intermediate bytecode into native machine code on the fly. The Java platform also includes an extensive set of libraries. The essential components in

1508-623: The Java programming language is the primary way to produce code that will be deployed as byte code in a Java virtual machine (JVM); byte code compilers are also available for other languages, including Ada , JavaScript , Kotlin (Google's preferred Android language), Python , and Ruby . In addition, several languages have been designed to run natively on the JVM, including Clojure , Groovy , and Scala . Java syntax borrows heavily from C and C++ , but object-oriented features are modeled after Smalltalk and Objective-C . Java eschews certain low-level constructs such as pointers and has

1566-523: The Oracle Solaris operating system and SPARC architecture. The Java Runtime Environment (JRE) released by Oracle is a freely available software distribution containing a stand-alone JVM (HotSpot), the Java standard library ( Java Class Library ), a configuration tool, and—until its discontinuation in JDK 9—a browser plug-in. It is the most common Java environment installed on personal computers in

1624-541: The for-each loop , generics , autoboxing and var-args . Java SE 6 (December 11, 2006) – Codename Mustang . It was bundled with a database manager and facilitates the use of scripting languages with the JVM (such as JavaScript using Mozilla 's Rhino engine). As of this version, Sun replaced the name "J2SE" with Java SE and dropped the ".0" from the version number. Other major changes include support for pluggable annotations ( JSR 269 ), many GUI improvements, including native UI enhancements to support

1682-631: The C++ threading subcommittee set to work on suitable memory model; in 2005, they submitted C working document n1131 to get the C Committee on board with their efforts. The final revision of the proposed memory model, C++ n2429, was accepted into the C++ draft standard at the October 2007 meeting in Kona. The memory model was then included in the next C++ and C standards, C++11 and C11 . The Rust programming language inherited most of C/C++'s memory model. This computer-programming -related article

1740-530: The C++/ C programming languages. Engineer Patrick Naughton had become increasingly frustrated with the state of Sun's C++ and C application programming interfaces (APIs) and tools, as well as with the way the NeWS project was handled by the organization. Naughton informed Scott McNealy about his plan of leaving Sun and moving to NeXT ; McNealy asked him to pretend he was God and send him an e-mail explaining how to fix

1798-408: The JVM for dynamic memory allocation . In HotSpot the heap is divided into generations : The permanent generation (or permgen ) was used for class definitions and associated metadata prior to Java 8. Permanent generation was not part of the heap. The permanent generation was removed from Java 8. Originally there was no permanent generation, and objects and classes were stored together in

Apache Commons - Misplaced Pages Continue

1856-436: The JVM specification. (Instead, Google 's Android development tools take Java programs as input and output Dalvik bytecode, which is the native input format for the virtual machine on Android devices.) The last Critical Path Update version of JRE with an Oracle BCL Agreement was 8u201 and, the last Patch Set Update version with the same license was 8u202. The last Oracle JRE implementation, regardless of its licensing scheme,

1914-476: The Java Virtual Machine as separate entities, so that they are no longer considered a single unit. Third parties have produced many compilers or interpreters that target the JVM. Some of these are for existing languages, while others are for extensions to the Java language. These include: The success of Java and its write once, run anywhere concept has led to other similar efforts, notably

1972-545: The Java libraries provide the programmer a well-known set of functions to perform common tasks, such as maintaining lists of items or performing complex string parsing. Second, the class libraries provide an abstract interface to tasks that would normally depend heavily on the hardware and operating system. Tasks such as network access and file access are often heavily intertwined with the distinctive implementations of each platform. The java.net and java.io libraries implement an abstraction layer in native OS code, then provide

2030-634: The Java platform. The Java Language Specification (JLS) specifies the language; changes to the JLS are managed under JSR 901. Sun released JDK 1.1 on February 19, 1997. Major additions included an extensive retooling of the Abstract Window Toolkit (AWT) event model, inner classes added to the language, JavaBeans , and Java Database Connectivity (JDBC). J2SE 1.2 (December 8, 1998) – Codename Playground . This and subsequent releases through J2SE 5.0 were rebranded Java 2 and

2088-526: The Java virtual machine, a compiler, performance monitoring tools, a debugger, and other utilities that Oracle considers useful for Java programmers. Oracle releases the current version of the software under the Oracle No-Fee Terms and Conditions (NFTC) license. Oracle releases binaries for the x86-64 architecture for Windows, macOS, and Linux based operating systems, and for the aarch64 architecture for macOS and Linux. Previous versions supported

2146-529: The JavaSoft group to develop the technology. While the so-called Java applets for web browsers no longer are the most popular use of Java (with it e.g. more used server-side) or the most popular way to run code client-side (JavaScript took over as more popular), it still is possible to run Java (or other JVM languages such as Kotlin) in web browsers, even after JVM support has been dropped from them, using e.g. TeaVM . On November 13, 2006, Sun Microsystems made

2204-560: The Project Nashorn JavaScript runtime, a new Date and Time API inspired by Joda Time, and the removal of PermGen. This version is not officially supported on the Windows XP platform, but is known to work there. Thus, due to the end of Java 7's lifecycle it is the recommended version for XP users. Previously, only an unofficial manual installation method had been described for Windows XP SP3. It refers to JDK8,

2262-425: The area of memory models revolves around: The Java memory model was the first attempt to provide a comprehensive threading memory model for a popular programming language. After it was established that threads could not be implemented safely as a library without placing certain restrictions on the implementation and, in particular, that the C and C++ standards ( C99 and C++03 ) lacked necessary restrictions,

2320-722: The bulk of its implementation of Java available under the GNU General Public License (GPL). The Java language has undergone several changes since the release of JDK ( Java Development Kit ) 1.0 on January 23, 1996, as well as numerous additions of classes and packages to the standard library . Since J2SE 1.4 the Java Community Process (JCP) has governed the evolution of the Java Language. The JCP uses Java Specification Requests (JSRs) to propose and specify additions and changes to

2378-548: The company. Naughton envisioned the creation of a small team that could work autonomously without the bureaucracy that was stalling other Sun projects. McNealy forwarded the message to other important people at Sun, and the Stealth Project started. The Stealth Project was soon renamed to the Green Project , with James Gosling and Mike Sheridan joining Naughton. Together with other engineers, they began work in

Apache Commons - Misplaced Pages Continue

2436-705: The core classes. A Java Plug-in was released, and Sun's JVM was equipped with a JIT compiler for the first time. J2SE 1.3 (May 8, 2000) – Codename Kestrel . Notable changes included the bundling of the HotSpot JVM (the HotSpot JVM was first released in April, 1999 for the J2SE ;1.2 JVM), JavaSound , Java Naming and Directory Interface (JNDI) and Java Platform Debugger Architecture (JPDA). J2SE 1.4 (February 6, 2002) – Codename Merlin . This became

2494-618: The developing platform for Java that also includes a fully functioning Java Runtime Environment . Java 8 is supported on Windows Server 2008 R2 SP1, Windows Vista SP2 and Windows 7 SP1, Ubuntu 12.04 LTS and higher (and some other OSes). Java SE 9 and 10 have higher system requirements, i.e. Windows 7 or Server 2012 (and web browser minimum certified is upped to Internet Explorer 11 or other web browsers), and Oracle dropped 32-bit compatibility for all platforms, i.e. only Oracle's " 64-bit Java virtual machines (JVMs) are certified". Memory model (programming) In computing,

2552-576: The discontinuation of the Java browser plug-in, any web page might have potentially run a Java applet, which provided an easily accessible attack surface to malicious web sites. In 2013 Kaspersky Labs reported that the Java plug-in was the method of choice for computer criminals. Java exploits are included in many exploit packs that hackers deploy onto hacked web sites. Java applets were removed in Java 11, released on September 25, 2018. The Java platform and language began as an internal project at Sun Microsystems in December 1990, providing an alternative to

2610-575: The first release of the Java platform developed under the Java Community Process as JSR 59. Major changes included regular expressions modeled after Perl , exception chaining , an integrated XML parser and XSLT processor ( JAXP ), and Java Web Start . J2SE 5.0 (September 30, 2004) – Codename Tiger . It was originally numbered 1.5, which is still used as the internal version number. Developed under JSR 176, Tiger added several significant new language features including

2668-653: The future. The Commons Sandbox provides a workspace where Commons contributors collaborate and experiment on projects not included in the Commons Proper. Commons members champion projects in the Sandbox for promotion to the Commons Proper, and groups of developers work to enhance Sandbox projects until they meet the standards for promotion. The Commons Dormant is a collection of components that have been declared inactive due to little recent development activity. These components may be used, but must be built yourself. It

2726-526: The laptop and desktop form factor . Mobile phones including feature phones and early smartphones that ship with a JVM are most likely to include a JVM meant to run applications targeting Micro Edition of the Java platform. Meanwhile, most modern smartphones, tablet computers , and other handheld PCs that run Java apps are most likely to do so through support of the Android operating system , which includes an open source virtual machine incompatible with

2784-832: The latest long-term support (LTS) version is Java 21 released in September 2023, which is one of a few LTS versions still supported, down to Java 8 LTS. As an open source platform, Java has many distributors, including Amazon , IBM , Azul Systems , and AdoptOpenJDK . Distributions include Amazon Corretto, Zulu, AdoptOpenJDK, and Liberica. Regarding Oracle, it distributes Java 8, and also makes available e.g. Java 11, both also currently supported LTS versions. Oracle (and others) "highly recommend that you uninstall older versions of Java" than Java 8, because of serious risks due to unresolved security issues. Since Java 9 (as well as versions 10, and 12–16, and 18–20) are no longer supported, Oracle advises its users to "immediately transition" to

2842-506: The look and feel of Windows Vista , and improvements to the Java Platform Debugger Architecture (JPDA) & JVM Tool Interface for better monitoring and troubleshooting. Java SE 7 (July 28, 2011) – Codename Dolphin . This version developed under JSR 336. It added many small language changes including strings in switch, try-with-resources and type inference for generic instance creation. The JVM

2900-458: The platform are the Java language compiler, the libraries, and the runtime environment in which Java intermediate bytecode executes according to the rules laid out in the virtual machine specification. Different platforms target different classes of device and application domains : Java Platform, Standard Edition (Java SE) is a computing platform for development and deployment of portable code for desktop and server environments. Java SE

2958-495: The same area. But as class unloading occurs much more rarely than objects are collected, moving class structures to a specific area allowed significant performance improvements. The Java JRE is installed on a large number of computers. End users with an out-of-date version of JRE therefore are vulnerable to many known attacks. This led to the widely shared belief that Java is inherently insecure. Since Java 1.7, Oracle's JRE for Windows includes automatic update functionality. Before

SECTION 50

#1732780660276

3016-469: The same reusable functions commonly found in modern operating systems. Most of the system library is also written in Java. For instance, the Swing library paints the user interface and handles the events itself, eliminating many subtle differences between how different platforms handle components. The Java class libraries serve three purposes within the Java platform. First, like other standard code libraries,

3074-531: The team re-targeted the platform for the World Wide Web . They felt that with the advent of graphical web browsers like Mosaic the Internet could evolve into the same highly interactive medium that they had envisioned for cable TV. As a prototype, Naughton wrote a small browser, WebRunner (named after the movie Blade Runner ), renamed HotJava in 1995. Sun renamed the Oak language to Java after

3132-416: The version name "J2SE" ( Java 2 Platform, Standard Edition ) replaced JDK to distinguish the base platform from J2EE ( Java 2 Platform, Enterprise Edition ) and J2ME ( Java 2 Platform, Micro Edition ). Major additions included reflection , a collections framework, Java IDL (an interface description language implementation for CORBA interoperability), and the integration of the Swing graphical API into

3190-404: Was 9.0.4. Since Java Platform SE 9, the whole platform also was grouped into modules . The modularization of Java SE implementations allows developers to bundle their applications together with all the modules used by them, instead of solely relying on the presence of a suitable Java SE implementation in the user device. In most modern operating systems (OSs), a large body of reusable code

3248-472: Was designed for use with the Java platform. Programming languages are typically outside of the scope of the phrase "platform", although the Java programming language was listed as a core part of the Java platform before Java 7. The language and runtime were therefore commonly considered a single unit. However, an effort was made with the Java ;7 specification to more clearly treat the Java language and

3306-620: Was extended with support for dynamic languages, while the class library was extended among others with a join/fork framework, an improved new file I/O library and support for new network protocols such as SCTP . Java 7 Update 76 was released in January 2015, with expiration date April 14, 2015. In June 2016, after the last public update of Java 7, " remotely exploitable " security bugs in Java 6, 7, and 8 were announced. Java SE 8 (March 18, 2014) – Codename Kenai . Notable changes include language-level support for lambda expressions ( closures ) and default methods,

3364-417: Was formerly known as Java 2 Platform, Standard Edition (J2SE). The heart of the Java platform is the "virtual machine" that executes Java bytecode programs. This bytecode is the same no matter what hardware or operating system the program is running under. However, new versions, such as for Java 10 (and earlier), have made small changes, meaning the bytecode is in general only forward compatible . There

#275724