GNU Compiler for Java: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
Alter: title. | Use this bot. Report bugs. | Suggested by BrownHairedGirl | #UCB_webform 3298/3806
 
(5 intermediate revisions by 4 users not shown)
Line 19:
| website = {{URL|https://gcc.gnu.org}}
}}
The '''GNU Compiler for Java''' ('''GCJ''') is a discontinued [[Free software|free]] [[compiler]] for the [[Java (programming language)|Java programming language]]. It was part of the [[GNU Compiler Collection]] for over ten years but as of 2017 it is no longer maintained and will not be part of future releases.<ref>{{cite web |url=https://gcc.gnu.org/java/ |title=GCJ: The GNU Compiler for Java - GNU Project - Free Software Foundation (FSF) |access-date=2010-04-22 |url-status=dead |archive-url=https://web.archive.org/web/20070509055923/http://gcc.gnu.org/java/ |archive-date=2007-05-09 }}</ref><ref>{{cite book |last=Campbell |first=Bill |date=2013 |title=Introduction to Compiler Construction in a Java World |url=https://books.google.com/books?id=-b8WjLY2eKEC&pg=PA277 |publisher=CRC Press Taylor & Francis Group |isbn=978-1-4398-6088-5 |access-date=2014-02-06}}</ref>
 
GCJ compiles Java [[source code]] to [[Java virtual machine]] (JVM) [[bytecode]] or to [[machine code]] for a number of [[CPU architecture]]s. It could also compile [[Class (file format)|class files]] and whole [[JAR (file format)|JARs]] that contain bytecode into machine code.<ref>{{Cite web|url=https://www.linuxjournal.com/article/4860|title = Compiling Java with GCJ &#124; Linux Journal}}</ref><ref>{{Cite web|url=http://freecode.com/projects/gcj|title = GNU Compiler for Java}}</ref>
Line 28:
</ref>
 
In 2007, a lot of work was done to implement support for Java's two graphical [[application programming interface|API]]s in [[GNU Classpath]]: [[Abstract Window Toolkit|AWT]] and [[Swing (Java)|Swing]]. Software support for [[Abstract Window Toolkit|AWT]] is still in development.<!--Note, "Optional SWT support" also available for micro-libgcj (that is a subset - not maintained, not sure if this SWT support also applies to GCJ)--> "Once AWT support is working then Swing support can be considered. There is at least one free-software partial implementations of [[Swing Application Framework|Swing]] that may be usable.".<ref>[https://gcc.gnu.org/java/faq.html#2_4 The GCJ FAQ]</ref> The GNU CLASSPATH was never completed to even Java 1.2 status and now appears to have been abandoned completely.
 
<!--Not sure if this non-development for years contradicts above "AWT is still in development" as that is not a compiler (but would appear in "News"?)-->As of 2015, there were no new developments announced from GCJ and the product was in [[maintenance mode]], with open-source Java toolchain development mostly happening within [[OpenJDK]].<ref>[https://www.phoronix.com/scan.php?page=news_item&px=MTUwOTA GCC Looks To Turn Off Java, Replace With Go Or ADA]</ref> GCJ was removed from the GCC [[Trunk (software)|trunk]] on September 30, 2016.<ref>{{cite web|url=https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=240661|title=[gcc] Revision 240661|date=September 30, 2016|author=Andrew Haley}}</ref><ref>{{Cite web|url=https://tromey.com/blog/?p=911|title=The Deletion of gcj|last=Tromey|first=Tom|date=October 2, 2016|website=The Cliffs of Inanity|access-date=October 3, 2016}}</ref> Announcement of its removal was made with the release of the GCC 7.1, which does not contain it.<ref>{{cite web|url=https://gcc.gnu.org/gcc-7/changes.html|title=GCC 7 Release Series: Changes, New Features, and Fixes|access-date=May 9, 2017}}</ref> GCJ remains part of GCC 6.
Line 50:
 
<syntaxhighlight lang="java">
public class IntMyInteger {
public private int i;
{
 
public int i;
public Int(int i) {
this.i = i; }
}
public static Int zero = new Int(0);
 
public int get() {
return i;
}
 
public void set(int j) {
i = j;
}
 
public static final Int zeroZERO = new Int(0);
}
</syntaxhighlight>
Line 62 ⟶ 73:
<syntaxhighlight lang="cpp">
#include <gcj/cni.h>
#include <IntMyInteger>
 
MyInteger* mult(MyInteger& p, int k) {
if (k == 0) {
return IntMyInteger::zeroZERO; // Static member access.
}
 
return new IntMyInteger(p->i.get() * k);
Int *mult(Int *p, int k)
{
if (k == 0)
return Int::zero; // Static member access.
return new Int(p->i * k);
}
</syntaxhighlight>
Line 83 ⟶ 95:
* [[Jikes]]
* [[GraalVM]] - GraalVM's Native Image functionality is an ahead-of-time compilation technology that produces executable binaries of class files.
* [[C to Java Virtual Machinevirtual compilersmachine]]
* [[Free Java implementations]]
* [[Kotlin (programming language)|Kotlin]] - Kotlin/Native is a technology for compiling Kotlin to native binaries that run without any JVM. It comprises a [[LLVM]]-based backend for the Kotlin compiler and a native implementation of the Kotlin runtime library.
Line 92 ⟶ 104:
==External links==
* {{cite web |url= http://gcc.gnu.org/java/ |title= Official website |publisher= GNU |work= GCC |date= Mar 30, 2007 |url-status= dead |archive-date= May 9, 2007 |archive-url= https://web.archive.org/web/20070509055923/http://gcc.gnu.org/java/ }}
* {{cite web |url= http://gcc.gnu.org/onlinedocs/gcj/ |title= GCJ MaualManual |url-status= dead |archive-date= August 22, 2016 |archive-url= https://web.archive.org/web/20160822153028/http://gcc.gnu.org/onlinedocs/gcj/ }}
* {{cite web |url= http://gcc.gnu.org/onlinedocs/gcj/About-CNI.html |title= About CNI |work= GCJ Manual |url-status= dead |archive-date= July 28, 2016 |archive-url= https://web.archive.org/web/20160728215116/http://gcc.gnu.org/onlinedocs/gcj/About-CNI.html }}
* {{cite web |url= https://lwn.net/Articles/130796/ |publisher= LWN |title= GCJ - past, present, and future |first= Mark |last= Wielaard |date= Apr 6, 2005 |url-status= live |archive-date= August 2, 2019 |archive-url= https://web.archive.org/web/20190802072307/https://lwn.net/Articles/130796/ }}
Line 100 ⟶ 112:
 
{{DEFAULTSORT:Gnu Compiler For Java}}
[[Category:Free compilers and interpretersopen source compilers]]
[[Category:GNU Project software|Java]]
[[Category:Java compilers]]