Difference between revisions of "Java"

From Chessprogramming wiki
Jump to: navigation, search
(Created page with "'''Home * Programming * Languages * Java''' '''Java''' has been developed by Sun Microsystems since 1991 and is mostly connected with [https://en.wi...")
 
 
(7 intermediate revisions by the same user not shown)
Line 16: Line 16:
 
<span id="JavaEngines"></span>
 
<span id="JavaEngines"></span>
 
=Java Engines=  
 
=Java Engines=  
[[Category:Java]] <ref>[http://www.talkchess.com/forum/viewtopic.php?t=58080 java engines] by [[Gabor Szots]], [[CCC]], October 28, 2015</ref>:  
+
* [[:Category:Java]] <ref>[http://www.talkchess.com/forum/viewtopic.php?t=58080 java engines] by [[Gabor Szots]], [[CCC]], October 28, 2015</ref>:  
  
 
=See also=  
 
=See also=  
Line 28: Line 28:
 
* [[Andrew Appel]] ('''1998'''). ''[https://www.cs.princeton.edu/~appel/modern/java/ Modern Compiler Implementation in Java]''. [https://en.wikipedia.org/wiki/Cambridge_University_Press Cambridge University Press]
 
* [[Andrew Appel]] ('''1998'''). ''[https://www.cs.princeton.edu/~appel/modern/java/ Modern Compiler Implementation in Java]''. [https://en.wikipedia.org/wiki/Cambridge_University_Press Cambridge University Press]
 
* [[Liwu Li]] ('''1998'''). ''[https://link.springer.com/book/10.1007%2F978-3-642-95851-9 Java - Data Structures and Programming]''. [https://en.wikipedia.org/wiki/Springer_Science%2BBusiness_Media Springer]
 
* [[Liwu Li]] ('''1998'''). ''[https://link.springer.com/book/10.1007%2F978-3-642-95851-9 Java - Data Structures and Programming]''. [https://en.wikipedia.org/wiki/Springer_Science%2BBusiness_Media Springer]
 +
* [[Erik D. Demaine]] ('''1998'''). ''[http://erikdemaine.org/papers/CPE98/ C to Java: Converting Pointers into References]''. [https://dblp.org/db/journals/concurrency/concurrency10.html Concurrency: Practice and Experience, Vol. 10], Nos. 11-13
 
==2000 ...==
 
==2000 ...==
 
* [[Barbara Liskov]], [https://en.wikipedia.org/wiki/John_Guttag John Guttag] ('''2000'''). ''[https://www.amazon.com/Program-Development-Java-Specification-Object-Oriented/dp/0201657686/ref=sr_1_1?s=books&ie=UTF8&qid=1344621866&sr=1-1 Program Development in Java; Abstraction, Specification, and Object-oriented Design]''. [https://en.wikipedia.org/wiki/Addison-Wesley Addison-Wesley]
 
* [[Barbara Liskov]], [https://en.wikipedia.org/wiki/John_Guttag John Guttag] ('''2000'''). ''[https://www.amazon.com/Program-Development-Java-Specification-Object-Oriented/dp/0201657686/ref=sr_1_1?s=books&ie=UTF8&qid=1344621866&sr=1-1 Program Development in Java; Abstraction, Specification, and Object-oriented Design]''. [https://en.wikipedia.org/wiki/Addison-Wesley Addison-Wesley]
Line 34: Line 35:
 
* [https://dblp.uni-trier.de/pers/hd/y/Yang:Yue Yue Yang], [https://dblp.uni-trier.de/pers/hd/g/Gopalakrishnan:Ganesh Ganesh Gopalakrishnan], [[Gary Lindstrom]] ('''2002'''). ''Specifying Java Thread Semantics Using a Uniform Memory Model''. [https://dblp.uni-trier.de/db/conf/java/java2002.html Java Grande 2002], [http://formalverification.cs.utah.edu/yyang/papers/umm_old.pdf pdf]
 
* [https://dblp.uni-trier.de/pers/hd/y/Yang:Yue Yue Yang], [https://dblp.uni-trier.de/pers/hd/g/Gopalakrishnan:Ganesh Ganesh Gopalakrishnan], [[Gary Lindstrom]] ('''2002'''). ''Specifying Java Thread Semantics Using a Uniform Memory Model''. [https://dblp.uni-trier.de/db/conf/java/java2002.html Java Grande 2002], [http://formalverification.cs.utah.edu/yyang/papers/umm_old.pdf pdf]
 
* [[Andrew Appel]], [https://dblp.uni-trier.de/pers/hd/p/Palsberg:Jens Jens Palsberg] ('''2002'''). ''[http://www.cambridge.org/catalogue/catalogue.asp?isbn=9780521820608 Modern Compiler Implementation in Java]''. 2nd edition, [https://en.wikipedia.org/wiki/Cambridge_University_Press Cambridge University Press]
 
* [[Andrew Appel]], [https://dblp.uni-trier.de/pers/hd/p/Palsberg:Jens Jens Palsberg] ('''2002'''). ''[http://www.cambridge.org/catalogue/catalogue.asp?isbn=9780521820608 Modern Compiler Implementation in Java]''. 2nd edition, [https://en.wikipedia.org/wiki/Cambridge_University_Press Cambridge University Press]
 +
* [https://dblp.uni-trier.de/pers/hd/k/Kerr:Amy_J= Amy J. Kerr], [[Todd W. Neller]], [https://dblp.uni-trier.de/pers/hd/p/Pilla:Christopher_J=_La Christopher J. La Pilla] , [https://dblp.uni-trier.de/pers/hd/s/Schompert:Michael_D= Michael D. Schompert] ('''2002'''). ''[https://www.semanticscholar.org/paper/Java-Resources-for-Teaching-Reinforcement-Learning-Kerr-Neller/3d84018eb8b8668c13d1d4f6efca4442af2915b4 Java Resources for Teaching Reinforcement Learning]''. [https://dblp.uni-trier.de/db/conf/pdpta/pdpta2003-3.html PDPTA 2003] » [[Reinforcement Learning]]
 
* [[Liwu Li]] ('''2004'''). ''[http://www.jot.fm/contents/issue_2004_07/article2.html Extending the Java Language with Dynamic Classification]''.  [https://en.wikipedia.org/wiki/The_Journal_of_Object_Technology Journal of Object Technology], Vol. 3, No 7
 
* [[Liwu Li]] ('''2004'''). ''[http://www.jot.fm/contents/issue_2004_07/article2.html Extending the Java Language with Dynamic Classification]''.  [https://en.wikipedia.org/wiki/The_Journal_of_Object_Technology Journal of Object Technology], Vol. 3, No 7
 
==2005 ...==
 
==2005 ...==
Line 58: Line 60:
 
* [http://www.talkchess.com/forum/viewtopic.php?t=13046 Java Chess] by [[William H. Rogers]], [[CCC]], April 12, 2007
 
* [http://www.talkchess.com/forum/viewtopic.php?t=13046 Java Chess] by [[William H. Rogers]], [[CCC]], April 12, 2007
 
* [http://www.talkchess.com/forum/viewtopic.php?t=15896 Magic bitboards, Java] by Sargon, [[CCC]], August 19, 2007 » [[Magic Bitboards]]
 
* [http://www.talkchess.com/forum/viewtopic.php?t=15896 Magic bitboards, Java] by Sargon, [[CCC]], August 19, 2007 » [[Magic Bitboards]]
 +
* [http://www.open-aurec.com/wbforum/viewtopic.php?f=4&t=49948 Java & Magic Bitboards] by [[Laurens Winkelhagen]], [[Computer Chess Forums|Winboard Forum]], February 03, 2009 » [[Magic Bitboards]]
 
* [http://www.talkchess.com/forum/viewtopic.php?t=30793 OliThink GUI in Java... Complete source posted] by [[Oliver Brausch]], [[CCC]], November 25, 2009 » [[OliThink]], [[GUI]]
 
* [http://www.talkchess.com/forum/viewtopic.php?t=30793 OliThink GUI in Java... Complete source posted] by [[Oliver Brausch]], [[CCC]], November 25, 2009 » [[OliThink]], [[GUI]]
 
==2010 ...==
 
==2010 ...==
Line 66: Line 69:
 
* <span id="9"></span>[http://www.talkchess.com/forum/viewtopic.php?t=65718 Java problem!] by [[Günther Simon]], [[CCC]], November 13, 2017
 
* <span id="9"></span>[http://www.talkchess.com/forum/viewtopic.php?t=65718 Java problem!] by [[Günther Simon]], [[CCC]], November 13, 2017
 
* [http://www.talkchess.com/forum/viewtopic.php?t=65724 Bitboards and Java] by [[Fred Hamilton]], [[CCC]], November 14, 2017 » [[Bitboards]]
 
* [http://www.talkchess.com/forum/viewtopic.php?t=65724 Bitboards and Java] by [[Fred Hamilton]], [[CCC]], November 14, 2017 » [[Bitboards]]
 +
==2020 ...==
 +
* [http://www.talkchess.com/forum3/viewtopic.php?f=7&t=74256 Java vs C. It's not like one would think] by [[Oliver Brausch]], [[CCC]], June 22, 2020 » [[OliThink]], [[C]]
  
 
=External Links=
 
=External Links=
Line 73: Line 78:
 
* [https://en.wikipedia.org/wiki/Java_virtual_machine Java virtual machine from Wikipedia]
 
* [https://en.wikipedia.org/wiki/Java_virtual_machine Java virtual machine from Wikipedia]
 
* [https://en.wikipedia.org/wiki/Generics_in_Java Generics in Java from Wikipedia]
 
* [https://en.wikipedia.org/wiki/Generics_in_Java Generics in Java from Wikipedia]
 +
* [https://en.wikipedia.org/wiki/Java_Native_Interface Java Native Interface from Wikipedia]
 
* [https://en.wikipedia.org/wiki/Log4j log4j from Wikipedia]
 
* [https://en.wikipedia.org/wiki/Log4j log4j from Wikipedia]
 
* [http://leepoint.net/JavaBasics/index.html Java Basics Lessons] by [[Fred Swartz]]
 
* [http://leepoint.net/JavaBasics/index.html Java Basics Lessons] by [[Fred Swartz]]
Line 79: Line 85:
 
* [http://www.t-t.dk/go/cg2000/code20.html Lambda-search Java-code (version 2.0)] by [[Thomas Thomsen]] » [[Lambda-Search]]
 
* [http://www.t-t.dk/go/cg2000/code20.html Lambda-search Java-code (version 2.0)] by [[Thomas Thomsen]] » [[Lambda-Search]]
 
* [https://groups.google.com/forum/#!forum/comp.lang.java comp.lang.java]
 
* [https://groups.google.com/forum/#!forum/comp.lang.java comp.lang.java]
==Chess Engines==
+
==Chess Libraries==
* [https://sourceforge.net/projects/sjce/files/chess_engines_nb-src/ Strong Java Chess Engines Game - Browse /chess_engines_nb-src at SourceForge.net]
+
* [https://github.com/ljgw/syzygy-bridge GitHub - ljgw/syzygy-bridge: Java bridge to use the Syzygy Tablebases via JNI] by [[Laurens Winkelhagen]] » [[FrankWalter]], [[Syzygy Bases]]
 
==Video Tutorials==
 
==Video Tutorials==
 
* [https://www.youtube.com/playlist?list=PLQV5mozTHmaffB0rBsD6m9VN1azgo5wXl Simple Java Chess Engine Tutorial Series] by [[Jonathan Warkentin]], [https://en.wikipedia.org/wiki/YouTube YouTube] Videos
 
* [https://www.youtube.com/playlist?list=PLQV5mozTHmaffB0rBsD6m9VN1azgo5wXl Simple Java Chess Engine Tutorial Series] by [[Jonathan Warkentin]], [https://en.wikipedia.org/wiki/YouTube YouTube] Videos
Line 89: Line 95:
 
<references />
 
<references />
 
'''[[Languages|Up one Level]]'''
 
'''[[Languages|Up one Level]]'''
 +
[[Category:Videos]]

Latest revision as of 19:19, 22 June 2020

Home * Programming * Languages * Java

Java has been developed by Sun Microsystems since 1991 and is mostly connected with James Gosling. The aim was to design a language that uses as virtual machine and is thus capable to run on any OS. The initial goal was that Java can be also used to control all devices as coffee machines. But he the fact that Java was quite free and OS independent has made Java very popular [1]. And so the environment has grown to several platforms for normal programming (SE), Enterprise Programming (EE) and Mobile Programming (ME). The most important aspect is that Java compiles to a bytecode. And this bytecode is then interpreted by virtual machine, or JIT compiled. And Java is a object oriented language with a lot of additional feature as a good security concept, reflection, annotations, generics, etc. For chess programming Java has lots of advantages but also some disadvantages.

Advantages

  • The usage of a virtual machine makes Java chess programs able to run on any OS as Windows or Linux.
  • Java uses garbage collection. So the programmer doesn't need to care of memory allocation and freeing.
  • The Java Ecosystem is very big. There are millions of free tools as IDEs (Eclipse, NetBeans), TestTools, Profilers, CodeCoverage, Error- and Architecture Checkers, automatic BuildSystems, and so on...
  • Java is a good OO language with lots of modern features and tools like embedded databases (db4o, hsqldb, H2, etc.) that might be useful for chess openings.

Disadvantages

  • Java was long time called a slow engine. Especially by game developers who needed fast graphics speed. In fact Java wasn't designed to deliver fast graphics. But on the other hand Java is not that slow as most people expected. It is one of the fastest vm languages available. A look on benchmarks like the shootout shows that Java is fast. Unfortunately it is about 2-10 times slower that pure C or C++. So in order to have the best engine performance, most developers tend to use C and C++ and not Java.
  • The Java environment can not easily generate *.exe files that represent chess engines. So a bat file has to be called to run the java vm. And this can make trouble in some Chess GUIs.
  • Java has no unsigned long data type that is e.g. used by bitboards. Thus one has to use unsigned right shift operator >>> [2] [3].
  • The Java garbage collector makes ram usage and the response time a little non-deterministic. But this is mostly not regarded as a real problem for chess developers.

Java Engines

See also

Books & Papers

1995 ...

2000 ...

2005 ...

2010 ...

Forum Posts

1997 ...

2000 ...

2010 ...

Re: Yes by Roland Stuckardt, CCC, February 24, 2014 » Fischerle

2020 ...

External Links

Language

Chess Libraries

Video Tutorials

References

Up one Level