Java Desktop System , briefly known as OpenSolaris Desktop , is a legacy desktop environment developed first by Sun Microsystems and then by Oracle Corporation after the 2010 Oracle acquisition of Sun. Java Desktop System is available for Solaris and was once available for Linux . The Linux version was discontinued after Solaris was released as open source software in 2005. Java Desktop System aims to provide a system familiar to the average computer user with a full suite of office productivity software such as an office suite , a web browser , email , calendaring, and instant messaging.
92-592: Despite being known as the Java Desktop System, it is not actually written in Java . Rather, it is built around a modified version of GNOME along with other common free software projects, which are written mostly in C and C++ . The name reflected Sun's promotion of the product as an outlet for corporate users to deploy software written for the Java platform. Sun first bundled a preview release of GNOME 1.4 on
184-706: A Balkanisation of the "Open Source Universe". Linus Torvalds, who decided not to adopt the GPLv3 for the Linux kernel, reiterated his criticism several years later. GPLv3 improved compatibility with several free software licenses such as the Apache License, version 2.0, and the GNU Affero General Public License, which GPLv2 could not be combined with. However, GPLv3 software could only be combined and share code with GPLv2 software if
276-622: A patent infringement claim or other litigation to impair users' freedom under the license. By 1990, it was becoming apparent that a less restrictive license would be strategically useful for the C library and for software libraries that essentially did the job of existing proprietary ones; when version 2 of the GPL (GPLv2) was released in June 1991, therefore, a second license – the GNU Library General Public License –
368-452: A "user" and a "consumer product". It also explicitly removed the section on "Geographical Limitations", the probable removal of this section having been announced at the launch of the public consultation. The fourth discussion draft, which was the last, was released on 31 May 2007. It introduced Apache License version 2.0 compatibility (prior versions are incompatible), clarified the role of outside contractors, and made an exception to avoid
460-408: A US federal court ruled that an open-source license is an enforceable contract. In October 2021 SFC sued Vizio over breach of contract as an end user to request source code for Vizio's TVs, a federal judge has ruled in the interim that the GPL is an enforceable contract by end users as well as a license for copyright holders. The text of the GPL is itself copyrighted , and the copyright is held by
552-717: A lawsuit against Google shortly after that for using Java inside the Android SDK (see the Android section). On April 2, 2010, James Gosling resigned from Oracle . In January 2016, Oracle announced that Java run-time environments based on JDK 9 will discontinue the browser plugin. Java software runs on everything from laptops to data centers , game consoles to scientific supercomputers . Oracle (and others) highly recommend uninstalling outdated and unsupported versions of Java, due to unresolved security issues in older versions. There were five primary goals in creating
644-443: A licensee has no right to redistribute it, not even in modified form (barring fair use ), except under the terms of the license. One is only required to adhere to the terms of the GPL if one wishes to exercise rights normally restricted by copyright law, such as redistribution. Conversely, if one distributes copies of the work without abiding by the terms of the GPL (for instance, by keeping the source code secret), they can be sued by
736-460: A modified derivative of a GPL licensed content management system is not required to distribute its changes to the underlying software, because the modified web portal is not being redistributed but rather hosted, and also because the web portal output is also not a derivative work of the GPL licensed content management system. There has been debate on whether it is a violation of the GPLv1 to release
828-482: A number of other standard servlet classes available, for example for WebSocket communication. The Java servlet API has to some extent been superseded (but still used under the hood) by two standard Java technologies for web services: Typical implementations of these APIs on Application Servers or Servlet Containers use a standard servlet for handling all interactions with the HTTP requests and responses that delegate to
920-566: A separate CD for Solaris 8. JDS version 2 included: JDS Release 2 was available for Solaris and for the SuSE -based Linux distribution. JDS Release 3 was released in 2005. It was included with Solaris 10 — upon installation of Solaris, one has the choice of using either the CDE or JDS. It was based on GNOME 2.6 and available only for the Solaris 10 platform. OpenSolaris received its own version of
1012-536: A series of widely used free software licenses , or copyleft licenses, that guarantee end users the freedoms to run, study, share, and modify the software. The GPL was the first copyleft license for general use. It was originally written by Richard Stallman , the founder of the Free Software Foundation (FSF), for the GNU Project . The license grants the recipients of a computer program
SECTION 10
#17327941032231104-440: A small portion of code to which Sun did not hold the copyright. Sun's vice-president Rich Green said that Sun's ideal role with regard to Java was as an evangelist . Following Oracle Corporation 's acquisition of Sun Microsystems in 2009–10, Oracle has described itself as the steward of Java technology with a relentless commitment to fostering a community of participation and transparency. This did not prevent Oracle from filing
1196-429: A stock version of GNOME. Java (programming language) Java is a high-level , class-based , object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let programmers write once, run anywhere ( WORA ), meaning that compiled Java code can run on all platforms that support Java without
1288-583: A subject of controversy during the 2010s. The class library contains features such as: Javadoc is a comprehensive documentation system, created by Sun Microsystems . It provides developers with an organized system for documenting their code. Javadoc comments have an extra asterisk at the beginning, i.e. the delimiters are /** and */ , whereas the normal multi-line comments in Java are delimited by /* and */ , and single-line comments start with // . GNU General Public License The GNU General Public Licenses ( GNU GPL or simply GPL ) are
1380-679: A very popular programming language since then. Java was the third most popular programming language in 2022 according to GitHub . Although still widely popular, there has been a gradual decline in use of Java in recent years with other languages using JVM gaining popularity. Java was originally developed by James Gosling at Sun Microsystems . It was released in May 1995 as a core component of Sun's Java platform . The original and reference implementation Java compilers , virtual machines, and class libraries were originally released by Sun under proprietary licenses . As of May 2007, in compliance with
1472-576: Is actually two compilers in one; and with GraalVM (included in e.g. Java 11, but removed as of Java 16) allowing tiered compilation . Java itself is platform-independent and is adapted to the particular platform it is to run on by a Java virtual machine (JVM), which translates the Java bytecode into the platform's machine language. Programs written in Java have a reputation for being slower and requiring more memory than those written in C++ . However, Java programs' execution speed improved significantly with
1564-418: Is allowed to charge a fee for this service or do this free of charge. This latter point distinguishes the GPL from software licenses that prohibit commercial redistribution. The FSF argues that free software should not place restrictions on commercial use, and the GPL explicitly states that GPL works may be sold at any price. The GPL additionally states that a distributor may not impose "further restrictions on
1656-449: Is applied to ensure that end users retain the freedoms defined above. However, software running as an application program under a GPL-licensed operating system such as Linux is not required to be licensed under GPL or to be distributed with source-code availability—the licensing depends only on the used libraries and software components and not on the underlying platform. For example, if a program consists only of original source code , or
1748-427: Is combined with source code from other software components , then the custom software components need not be licensed under GPL and need not make their source code available; even if the underlying operating system used is licensed under the GPL, applications running on it are not considered derivative works. Only if GPL licensed parts are used in a program (and the program is distributed), then all other source code of
1840-501: Is how the compiled code was available and there are "clear directions" on where to find the source code. The FSF does not hold the copyright for a work released under the GPL unless an author explicitly assigns copyrights to the FSF (which seldom happens except for programs that are part of the GNU project). Only the individual copyright holders have the authority to sue when a license violation
1932-409: Is implicitly allocated on the stack or explicitly allocated and deallocated from the heap . In the latter case, the responsibility of managing memory resides with the programmer. If the program does not deallocate an object, a memory leak occurs. If the program attempts to access or deallocate memory that has already been deallocated, the result is undefined and difficult to predict, and the program
SECTION 20
#17327941032232024-626: Is insufficient free memory on the heap to allocate a new object; this can cause a program to stall momentarily. Explicit memory management is not possible in Java. Java does not support C/C++ style pointer arithmetic , where object addresses can be arithmetically manipulated (e.g. by adding or subtracting an offset). This allows the garbage collector to relocate referenced objects and ensures type safety and security. As in C++ and some other object-oriented languages, variables of Java's primitive data types are either stored directly in fields (for objects) or on
2116-399: Is likely to become unstable or crash. This can be partially remedied by the use of smart pointers , but these add overhead and complexity. Garbage collection does not prevent logical memory leaks, i.e. those where the memory is still referenced but never used. Garbage collection may happen at any time. Ideally, it will occur when a program is idle. It is guaranteed to be triggered if there
2208-420: Is no longer needed, typically when objects that are no longer needed are stored in containers that are still in use. If methods for a non-existent object are called, a null pointer exception is thrown. One of the ideas behind Java's automatic memory management model is that programmers can be spared the burden of having to perform manual memory management. In some languages, memory for the creation of objects
2300-500: Is prohibited by copyright law . The FSF argues that freedom-respecting free software should also not restrict commercial use and distribution (including redistribution): In purely private (or internal) use—with no sales and no distribution—the software code may be modified and parts reused without requiring the source code to be released. For sales or distribution, the entire source code needs to be made available to end users, including any code changes and additions—in that case, copyleft
2392-538: Is supported for interfaces . Java uses comments similar to those of C++. There are three different styles of comments: a single line style marked with two slashes ( // ), a multiple line style opened with /* and closed with */ , and the Javadoc commenting style opened with /** and closed with */ . The Javadoc style of commenting allows the user to run the Javadoc executable to create documentation for
2484-499: Is suspected. Software under the GPL may be run for all purposes, including commercial purposes and even as a tool for creating proprietary software , such as when using GPL-licensed compilers . Users or companies who distribute GPL-licensed works (e.g. software), may charge a fee for copies or give them free of charge. This distinguishes the GPL from shareware software licenses that allow copying for personal use but prohibit commercial distribution or proprietary licenses where copying
2576-400: Is the latest version (Java 22, and 20 are no longer maintained). Java 8, 11, 17, and 21 are previous LTS versions still officially supported. James Gosling , Mike Sheridan, and Patrick Naughton initiated the Java language project in June 1991. Java was originally designed for interactive television, but it was too advanced for the digital cable television industry at the time. The language
2668-431: Is written inside classes, and every data item is an object, with the exception of the primitive data types, (i.e. integers, floating-point numbers, boolean values , and characters), which are not objects for performance reasons. Java reuses some popular aspects of C++ (such as the printf method). Unlike C++, Java does not support operator overloading or multiple inheritance for classes, though multiple inheritance
2760-698: The ASP loophole in the GPL . As there were concerns expressed about the administrative costs of checking code for this additional requirement, it was decided to keep the GPL and the AGPL license separated. Others, notably some high-profile Linux kernel developers such as Linus Torvalds , Greg Kroah-Hartman , and Andrew Morton , commented to the mass media and made public statements about their objections to parts of discussion drafts 1 and 2. The kernel developers referred to GPLv3 draft clauses regarding DRM / Tivoization , patents, and "additional restrictions", and warned of
2852-508: The AGPL (v1) , and patent deals between Microsoft and distributors of free and open-source software, which some viewed as an attempt to use patents as a weapon against the free software community. Version 3 was developed as an attempt to address these concerns and was officially released on 29 June 2007. Version 1 of the GNU GPL, released on 25 February 1989, was written to protect against
Java Desktop System - Misplaced Pages Continue
2944-593: The ConcurrentMaps and other multi-core collections, and it was improved further with Java 1.6. Some platforms offer direct hardware support for Java; there are micro controllers that can run Java bytecode in hardware instead of a software Java virtual machine, and some ARM -based processors could have hardware support for executing Java bytecode through their Jazelle option, though support has mostly been dropped in current implementations of ARM. Java uses an automatic garbage collector to manage memory in
3036-492: The Software Freedom Law Center . According to Stallman, the most important changes were in relation to software patents , free software license compatibility, the definition of "source code", and hardware restrictions on software modifications, such as tivoization . Other changes related to internationalization, how license violations are handled, and how additional permissions could be granted by
3128-555: The WIPO Copyright Treaty , and that those who convey the work waive all legal power to prohibit circumvention of the technical protection measure "to the extent such circumvention is effected by exercising rights under this License with respect to the covered work". This means that users cannot be held liable for circumventing DRM implemented using GPLv3-licensed code under laws such as the U.S. Digital Millennium Copyright Act (DMCA). The distribution rights granted by
3220-418: The object lifecycle . The programmer determines when objects are created, and the Java runtime is responsible for recovering the memory once objects are no longer in use. Once no references to an object remain, the unreachable memory becomes eligible to be freed automatically by the garbage collector. Something similar to a memory leak may still occur if a programmer's code holds a reference to an object that
3312-516: The stack (for methods) rather than on the heap, as is commonly true for non-primitive data types (but see escape analysis ). This was a conscious decision by Java's designers for performance reasons. Java contains multiple types of garbage collectors. Since Java 9, HotSpot uses the Garbage First Garbage Collector (G1GC) as the default. However, there are also several other garbage collectors that can be used to manage
3404-657: The Free Software Foundation. The FSF permits people to create new licenses based on the GPL, as long as the derived licenses do not use the GPL preamble without permission. This is discouraged, however, since such a license might be incompatible with the GPL and causes a perceived license proliferation . Other licenses created by the GNU project include the GNU Lesser General Public License , GNU Free Documentation License , and GNU Affero General Public License . The text of
3496-404: The GPL for modified versions of the work are not unconditional. When someone distributes a GPL licensed work plus their own modifications, the requirements for distributing the whole work cannot be any greater than the requirements that are in the GPL. This requirement is known as copyleft. It earns its legal power from the use of copyright on software programs. Because a GPL work is copyrighted,
3588-527: The GPL is not itself under the GPL. The license's copyright disallows modification of the license. Copying and distributing the license is allowed since the GPL requires recipients to get "a copy of this License along with the Program". According to the GPL FAQ, anyone can make a new license using a modified version of the GPL as long as they use a different name for the license, do not mention "GNU", and remove
3680-539: The GPL license family has been one of the most popular software licenses in the free and open-source software (FOSS) domain. Prominent free software programs licensed under the GPL include the Linux kernel and the GNU Compiler Collection (GCC). David A. Wheeler argues that the copyleft provided by the GPL was crucial to the success of Linux -based systems, giving the programmers who contributed to
3772-588: The GPL license includes an optional "any later version" clause, allowing users to choose between the original terms or the terms in new versions as updated by the FSF. Software projects licensed with the optional "or later" clause include the GNU Project, while projects like the Linux kernel is licensed under GPLv2 only. The "or any later version" clause is sometimes known as a "lifeboat clause" since it allows combinations between different versions of GPL-licensed software to maintain compatibility. The original GPL
Java Desktop System - Misplaced Pages Continue
3864-431: The GPL licensed program, they may still use the software within their organization however they like, and works (including programs) constructed by the use of the program are not required to be covered by this license. Software developer Allison Randal argued that the GPLv3 as a license is unnecessarily confusing for lay readers, and could be simplified while retaining the same conditions and legal force. In April 2017,
3956-464: The GPLv2 license used had the optional "or later" clause and the software was upgraded to GPLv3. While the "GPLv2 or any later version" clause is considered by FSF as the most common form of licensing GPLv2 software, Toybox developer Rob Landley described it as a lifeboat clause . Software projects licensed with the optional "or later" clause include the GNU Project , while a prominent example without
4048-471: The Java Desktop System became defunct with the end of the OpenSolaris project. With the end of the OpenSolaris project, JDS Release 3 is now the last release of the project on a currently supported operating system – Solaris 10. Newer Solaris based operating systems have abandoned the Java Desktop System. Solaris 11 and projects based upon the OpenSolaris codebase such as OpenIndiana use
4140-488: The Java Desktop System. OpenSolaris Desktop was tied to the OpenSolaris operating system, and did not have its own release schedule. OpenSolaris Desktop 01 (released October 28, 2005) was based on GNOME 2.10 and OpenSolaris Desktop 02 (released December 23, 2005) was based on GNOME 2.12. The last version was released with the release of OpenSolaris 2009.6, and was based on Gnome 2.24. It also included Firefox 3.1, OpenOffice 3 and Sun VirtualBox . The OpenSolaris Desktop line of
4232-834: The Java language, as part of J2SE 5.0. Prior to the introduction of generics, each variable declaration had to be of a specific type. For container classes, for example, this is a problem because there is no easy way to create a container that accepts only specific types of objects. Either the container operates on all subtypes of a class or interface, usually Object , or a different container class has to be created for each contained class. Generics allow compile-time type checking without having to create many container classes, each containing almost identical code. In addition to enabling more efficient code, certain runtime exceptions are prevented from occurring, by issuing compile-time errors. If Java prevented all runtime type errors ( ClassCastException s) from occurring, it would be type safe . In 2016,
4324-950: The Java language: As of November 2024 , Java 8, 11, 17, and 21 are supported as long-term support (LTS) versions, with Java 25, releasing in September 2025, as the next scheduled LTS version. Oracle released the last zero-cost public update for the legacy version Java 8 LTS in January 2019 for commercial use, although it will otherwise still support Java 8 with public updates for personal use indefinitely. Other vendors such as Adoptium continue to offer free builds of OpenJDK's long-term support (LTS) versions. These builds may include additional security patches and bug fixes. Major release versions of Java, along with their release dates: Sun has defined and supports four editions of Java targeting different application environments and segmented many of its APIs so that they belong to one of
4416-440: The Java platform must run similarly on any combination of hardware and operating system with adequate run time support. This is achieved by compiling the Java language code to an intermediate representation called Java bytecode , instead of directly to architecture-specific machine code . Java bytecode instructions are analogous to machine code, but they are intended to be executed by a virtual machine (VM) written specifically for
4508-540: The Software Package Data Exchange (SPDX). The license includes instructions to specify "version 2 of the License, or (at your option) any later version" to allow the flexible optional use of either version 2 or 3, but some developers change this to specify "version 2" only. In late 2005, the Free Software Foundation (FSF) announced work on version 3 of the GPL (GPLv3). On 16 January 2006,
4600-635: The ability to run Java applets within web pages, and Java quickly became popular. The Java 1.0 compiler was re-written in Java by Arthur van Hoff to comply strictly with the Java 1.0 language specification. With the advent of Java 2 (released initially as J2SE 1.2 in December 1998 – 1999), new versions had multiple configurations built for different types of platforms. J2EE included technologies and APIs for enterprise applications typically run in server environments, while J2ME featured APIs optimized for mobile applications. The desktop version
4692-429: The clause is the Linux kernel. The final version of the license text was published on 29 June 2007. The terms and conditions of the GPL must be made available to anybody receiving a copy of a work that has a GPL applied to it ("the licensee"). Any licensee who adheres to the terms and conditions is given permission to modify the work, as well as to copy and redistribute the work or any derivative version. The licensee
SECTION 50
#17327941032234784-470: The copyright holder. The concept of "software propagation", as a term for the copying and duplication of software, was explicitly defined. The public consultation process was coordinated by the Free Software Foundation with assistance from Software Freedom Law Center, Free Software Foundation Europe , and other free software groups. Comments were collected from the public via the gplv3.fsf.org web portal, using purpose-written software called stet . During
4876-399: The first "discussion draft" of GPLv3 was published, and the public consultation began. The public consultation was originally planned for nine to fifteen months, but ultimately lasted eighteen months, with four drafts being published. The official GPLv3 was released by the FSF on 29 June 2007. GPLv3 was written by Richard Stallman, with legal counsel from Eben Moglen and Richard Fontana from
4968-586: The generated servlet creates the response. Swing is a graphical user interface library for the Java SE platform. It is possible to specify a different look and feel through the pluggable look and feel system of Swing. Clones of Windows , GTK+ , and Motif are supplied by Sun. Apple also provides an Aqua look and feel for macOS . Where prior implementations of these looks and feels may have been considered lacking, Swing in Java SE 6 addresses this problem by using more native GUI widget drawing routines of
5060-596: The heap, such as the Z Garbage Collector (ZGC) introduced in Java 11, and Shenandoah GC, introduced in Java 12 but unavailable in Oracle-produced OpenJDK builds. Shenandoah is instead available in third-party builds of OpenJDK, such as Eclipse Temurin . For most applications in Java, G1GC is sufficient. In prior versions of Java, such as Java 8, the Parallel Garbage Collector was used as the default garbage collector. Having solved
5152-658: The host hardware. End-users commonly use a Java Runtime Environment (JRE) installed on their device for standalone Java applications or a web browser for Java applets . Standard libraries provide a generic way to access host-specific features such as graphics, threading , and networking . The use of universal bytecode makes porting simple. However, the overhead of interpreting bytecode into machine instructions made interpreted programs almost always run more slowly than native executables . Just-in-time (JIT) compilers that compile byte-codes to machine code during runtime were introduced from an early stage. Java's Hotspot compiler
5244-556: The implementation of floating-point arithmetic, and a history of security vulnerabilities in the primary Java VM implementation HotSpot . Developers have criticized the complexity and verbosity of the Java Persistence API (JPA), a standard part of Java EE. This has led to increased adoption of higher-level abstractions like Spring Data JPA, which aims to simplify database operations and reduce boilerplate code. The growing popularity of such frameworks suggests limitations in
5336-537: The introduction of just-in-time compilation in 1997/1998 for Java 1.1 , the addition of language features supporting better code analysis (such as inner classes, the StringBuilder class, optional assertions, etc.), and optimizations in the Java virtual machine, such as HotSpot becoming Sun's default JVM in 2000. With Java 1.5, the performance was improved with the addition of the java.util.concurrent package, including lock-free implementations of
5428-416: The kernel assurance that their work would benefit the whole world and remain free, rather than being exploited by software companies that would not have to give anything back to the community. In 2007, the third version of the license (GPLv3) was released to address some perceived problems with the second version (GPLv2) which were discovered during the latter's long-time usage. To keep the license current,
5520-536: The legal distinction between a license and a contract is an important one: contracts are enforceable by contract law , whereas licenses are enforced under copyright law . However, this distinction is not useful in the many jurisdictions where there are no differences between contracts and licenses, such as civil law systems. Those who do not accept the GPL's terms and conditions do not have permission, under copyright law, to copy or distribute GPL-licensed software or derivative works. However, if they do not redistribute
5612-420: The license. Copyleft applies only when a person seeks to redistribute the program. Developers may make private modified versions with no obligation to divulge the modifications, as long as they do not distribute the modified software to anyone else. Copyleft applies only to the software, and not to its output (unless that output is itself a derivative work of the program). For example, a public web portal running
SECTION 60
#17327941032235704-431: The major change in GPLv2 was the "Liberty or Death" clause, as he calls it – Section 7. The section says that licensees may distribute a GPL-covered work only if they can satisfy all of the license's obligations, despite any other legal obligations they might have. In other words, the obligations of the license may not be severed due to conflicting obligations. This provision is intended to discourage any party from using
5796-455: The memory management problem does not relieve the programmer of the burden of handling properly other kinds of resources, like network or database connections, file handles, etc., especially in the presence of exceptions. The syntax of Java is largely influenced by C++ and C . Unlike C++, which combines the syntax for structured, generic, and object-oriented programming, Java was built almost exclusively as an object-oriented language. All code
5888-522: The need to recompile. Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of the underlying computer architecture . The syntax of Java is similar to C and C++ , but has fewer low-level facilities than either of them. The Java runtime provides dynamic capabilities (such as reflection and runtime code modification) that are typically not available in traditional compiled languages. Java gained popularity shortly after its release, and has been
5980-453: The original author under copyright law. Copyright law has historically been used to prevent distribution of work by parties not authorized by the creator. Copyleft uses the same copyright laws to accomplish a very different goal. It grants rights to distribution to all parties insofar as they provide the same rights to subsequent ones, and they to the next, etc. In this way, the GPL and other copyleft licenses attempt to enforce libre access to
6072-509: The parties who would receive the covered work from you, a discriminatory patent license ... This aimed to make such future deals ineffective. The license was also meant to cause Microsoft to extend the patent licenses it granted to Novell customers for the use of GPLv3 software to all users of that GPLv3 software; this was possible only if Microsoft was legally a "conveyor" of the GPLv3 software. Early drafts of GPLv3 also let licensors add an AGPL -like requirement that would have plugged
6164-457: The perceived problems of a Microsoft–Novell style agreement, saying in Section 11 paragraph 6 that: You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of
6256-496: The platforms. The platforms are: The classes in the Java APIs are organized into separate groups called packages . Each package contains a set of related interfaces , classes, subpackages and exceptions . Sun also provided an edition called Personal Java that has been superseded by later, standards-based Java ME configuration-profile pairings. One design goal of Java is portability , which means that programs written for
6348-409: The preamble, though the preamble can be used in a modified license if permission to use it is obtained from the Free Software Foundation (FSF). According to the FSF, "The GPL does not require you to release your modified version or any part of it. You are free to make modifications and use them privately, without ever releasing them." However, if one releases a GPL-licensed entity to the public, there
6440-451: The program and can be read by some integrated development environments (IDEs) such as Eclipse to allow developers to access documentation within the IDE. The following is a simple example of a "Hello, World!" program that writes a message to the standard output : Java applets are programs embedded in other applications, mainly in web pages displayed in web browsers. The Java applet API
6532-526: The program needs to be made available under the same license terms. The GNU Lesser General Public License (LGPL) was created to have a weaker copyleft than the GPL, in that it does not require custom-developed source code (distinct from the LGPL licensed parts) to be made available under the same license terms. The fifth section of version 3 states that no GPL-licensed code shall be considered an effective "technical protection measure" as defined by Article 11 of
6624-420: The public consultation process, 962 comments were submitted for the first draft. By the end of the comment period, a total of 2,636 comments had been submitted. The third draft was released on 28 March 2007. This draft included language intended to prevent patent-related agreements such as the controversial Microsoft-Novell patent agreement , and restricted the anti-tivoization clauses to a legal definition of
6716-426: The rights granted by the GPL". This forbids activities such as distributing the software under a non-disclosure agreement or contract. The fourth section for version 2 of the license and the seventh section of version 3 require that programs distributed as pre-compiled binaries be accompanied by a copy of the source code, a written offer to distribute the source code via the same mechanism as the pre-compiled binary, or
6808-566: The rights of the Free Software Definition . The licenses in the GPL series are all copyleft licenses, which means that any derivative work must be distributed under the same or equivalent license terms. It is more restrictive than the Lesser General Public License and even further distinct from the more widely-used permissive software licenses such as BSD , MIT , and Apache . Historically,
6900-527: The selling of licenses for specialized products such as the Java Enterprise System. On November 13, 2006, Sun released much of its Java virtual machine (JVM) as free and open-source software (FOSS), under the terms of the GPL-2.0-only license. On May 8, 2007, Sun finished the process, making all of its JVM's core code available under free software /open-source distribution terms, aside from
6992-440: The source code in obfuscated form, such as in cases in which the author is less willing to make the source code available. The consensus was that while unethical, it was not considered a violation. The issue was clarified when the license was altered with v2 to require that the "preferred" version of the source code be made available. The GPL was designed as a license , rather than a contract. In some common law jurisdictions,
7084-555: The specifications of the Java Community Process , Sun had relicensed most of its Java technologies under the GPL-2.0-only license. Oracle offers its own HotSpot Java Virtual Machine, however the official reference implementation is the OpenJDK JVM which is free open-source software and used by most developers and is the default JVM for almost all Linux distributions. As of September 2024 , Java 23
7176-468: The standard JPA implementation's ease-of-use for modern Java development. The Java Class Library is the standard library , developed to support application development in Java. It is controlled by Oracle in cooperation with others through the Java Community Process program. Companies or individuals participating in this process can influence the design and development of the APIs. This process has been
7268-417: The terms of GPLv1 could be combined with software under more permissive terms, as this would not change the terms under which the whole could be distributed. However, software distributed under GPLv1 could not be combined with software distributed under a more restrictive license, as this would conflict with the requirement that the whole be distributable under the terms of GPLv1. According to Richard Stallman,
7360-446: The two main methods by which software distributors restricted the freedoms that define free software. The first problem was that distributors might publish only binary files that are executable, but not readable or modifiable by humans. To prevent this, GPLv1 stated that copying and distributing copies of any portion of the program must also make the human-readable source code available under the same licensing terms. The second problem
7452-409: The type system of Java was proven unsound in that it is possible to use generics to construct classes and methods that allow assignment of an instance one class to a variable of another unrelated class. Such code is accepted by the compiler, but fails at run time with a class cast exception. Criticisms directed at Java include the implementation of generics, speed, the handling of unsigned numbers,
7544-571: The underlying platforms. JavaFX is a software platform for creating and delivering desktop applications , as well as rich web applications that can run across a wide variety of devices. JavaFX is intended to replace Swing as the standard GUI library for Java SE , but since JDK 11 JavaFX has not been in the core JDK and instead in a separate module. JavaFX has support for desktop computers and web browsers on Microsoft Windows , Linux , and macOS . JavaFX does not have support for native OS look and feels. In 2004, generics were added to
7636-417: The web service methods for the actual business logic. JavaServer Pages ( JSP ) are server-side Java EE components that generate responses, typically HTML pages, to HTTP requests from clients . JSPs embed Java code in an HTML page by using the special delimiters <% and %> . A JSP is compiled to a Java servlet , a Java application in its own right, the first time it is accessed. After that,
7728-515: The work and all derivatives. Many distributors of GPL licensed programs bundle the source code with the executables . An alternative method of satisfying the copyleft is to provide a written offer to provide the source code on a physical medium (such as a CD) upon request. In practice, many GPL licensed programs are distributed over the Internet, and the source code is made available over FTP or HTTP . For Internet distribution, this complies with
7820-510: The written offer to obtain the source code that the user got when they received the pre-compiled binary under the GPL. The second section of version 2 and the fifth section of version 3 also require giving "all recipients a copy of this License along with the Program". Version 3 of the license allows making the source code available in additional ways in fulfillment of the seventh section. These include downloading source code from an adjacent network server or by peer-to-peer transmission, provided that
7912-440: Was deprecated with the release of Java 9 in 2017. Java servlet technology provides Web developers with a simple, consistent mechanism for extending the functionality of a Web server and for accessing existing business systems. Servlets are server-side Java EE components that generate responses to requests from clients . Most of the time, this means generating HTML pages in response to HTTP requests, although there are
8004-665: Was initially called Oak after an oak tree that stood outside Gosling's office. Later the project went by the name Green and was finally renamed Java , from Java coffee , a type of coffee from Indonesia . Gosling designed Java with a C / C++ -style syntax that system and application programmers would find familiar. Sun Microsystems released the first public implementation as Java 1.0 in 1996. It promised write once, run anywhere (WORA) functionality, providing no-cost run-times on popular platforms . Fairly secure and featuring configurable security, it allowed network- and file-access restrictions. Major web browsers soon incorporated
8096-439: Was introduced at the same time and numbered with version 2 to show that both were complementary. The version numbers diverged in 1999 when version 2.1 of the LGPL was released, which renamed it the GNU Lesser General Public License to reflect its place in the philosophy. The GPLv2 was also modified to refer to the new name of the LGPL, but its version number remained the same, resulting in the original GPLv2 not being recognised by
8188-689: Was renamed J2SE. In 2006, for marketing purposes, Sun renamed new J2 versions as Java EE , Java ME , and Java SE , respectively. In 1997, Sun Microsystems approached the ISO/IEC JTC 1 standards body and later the Ecma International to formalize Java, but it soon withdrew from the process. Java remains a de facto standard , controlled through the Java Community Process . At one time, Sun made most of its Java implementations available without charge, despite their proprietary software status. Sun generated revenue from Java through
8280-426: Was that distributors might add restrictions, either to the license or by combining the software with other software that had other restrictions on distribution. The union of two sets of restrictions would apply to the combined work, thus adding unacceptable constrictions. To prevent this, GPLv1 stated that modified versions, as a whole, had to be distributed under the terms of GPLv1. Therefore, software distributed under
8372-594: Was to produce one license that could be used for any project, thus making it possible for many projects to share code. The second version of the license, version 2, was released in 1991. Over the following 15 years, members of the free software community became concerned over problems in the GPLv2 license that could let someone exploit GPL-licensed software in ways contrary to the license's intent. These problems included tivoization (the inclusion of GPL-licensed software in hardware that refuses to run modified versions of its software), compatibility issues similar to those of
8464-528: Was written by Richard Stallman in 1989, for use with programs released as part of the GNU project. It was based on a unification of similar licenses used for early versions of GNU Emacs (1985), the GNU Debugger , and the GNU C Compiler . These licenses contained similar provisions to the modern GPL, but were specific to each program, rendering them incompatible, despite being the same license. Stallman's goal
#222777