User Tools

Site Tools


notatki:informatyka:java

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
notatki:informatyka:java [2019/03/21 13:06]
notatki:informatyka:java [2020/07/14 13:12] (current)
Line 1: Line 1:
 +====== Java ======
 +  * [[http://​dotnet.dzone.com/​news/​solid-software-works?​utm_source=feedburner&​utm_medium=feed&​utm_campaign=Feed%3A+javalobby%2Ffrontpage+%28Javalobby+%2F+Java+Zone%29|Rules of  SOLID programming/​Zasady SOLID'​nego programowania]]
 +  * [[https://​www.azul.com/​|Azul -> ZULU]] - free precompiled JVM based on OpenJDK. ZULU is preinstaled on AZURE Cloud
 +  * [[http://​docs.oracle.com/​javase/​|Java Documentation]]
 +===== Compilers and VM =====
 +  * [[http://​java.sun.com/​javase/​downloads/​index.jsp|SUN'​s JDK/JRE]]
 +  * [[http://​www.aonix.com/​perc.html|Aniox Perc]]
 +  * [[http://​gcc.gnu.org/​java/​|GCJ & GIJ]] GNU Java compiler and GNU interpreter for Java
 +  * [[http://​icedtea.classpath.org/​wiki/​Main_Page|IcedTea]] - RedHat JVM
 +  * [[http://​www.kaffe.org/​|Kaffe]] - Free community JVM
 +  * [[http://​www.sablevm.org/​|SableVM]] - Not actively maintained JVM 
 +  * [[http://​www.oracle.com/​technology/​products/​jrockit/​index.html|JRockit]] - Oracle'​s JVM 
 +  * [[http://​jikes.sourceforge.net/​|Jikes]] - Java Compiler and VM written in Java
 +  * [[http://​www.ej-technologies.com/​products/​exe4j/​overview.html| Exe4J]] - native code Java compiler
 +  * [[http://​www.excelsior-usa.com/​jet.html|Excelsior JET]] - native code Java compiler
 +Other
 +  * [[http://​en.wikipedia.org/​wiki/​List_of_Java_virtual_machines|Other VM - Wiki]]
 +  * [[http://​en.wikipedia.org/​wiki/​Java_compiler|Other compilers - Wiki]]
 +  * [[http://​en.wikipedia.org/​wiki/​C_to_Java_Virtual_Machine_compilers#​C_to_bytecode_compilers | C to Java compilers - Wiki]]
 +JVM and .Net languages
 +  * [[http://​en.wikipedia.org/​wiki/​List_of_JVM_languages|languages supported by JVM]]
 +  * [[http://​en.wikipedia.org/​wiki/​List_of_.NET_languages|languages supported by .Net]]
 +List all JVM or almost all is available [[http://​java-virtual-machine.net/​other.html|here]],​ or [[http://​www.dmoz.org/​Computers/​Programming/​Languages/​Java/​Implementations/​|here]]
  
 +
 +  * [[http://​www.nullstone.com/​htmls/​results/​java.htm|Java compilers test]]
 +
 +===== Performance Tuning =====
 +  * [[https://​www.infoq.com/​articles/​Troubleshooting-Java-Memory-Issues?​utm_campaign=infoq_content&​utm_source=infoq&​utm_medium=feed&​utm_term=global|Java Memory Management]]
 +  * [[http://​www.javaperformancetuning.com/​|Java Performance Tuning]]
 +  * [[http://​en.wikipedia.org/​wiki/​List_of_Java_bytecode_instructions|List of Java bytecode instructions]]
 +  * [[http://​java.sun.com/​docs/​books/​jvms/​|Java VM Specyfication]]
 +    * [[http://​java.sun.com/​docs/​books/​jvms/​second_edition/​html/​VMSpecTOC.doc.html|HTML book on JVM spec]]
 +  * [[http://​shootout.alioth.debian.org/​|The Computer Language ​
 +Benchmarks]] - comparison of various programming languages ​
 +  * [[http://​java.dzone.com/​articles/​know-jvm-series-when-weaker?​utm_source=feedburner&​utm_medium=feed&​utm_campaign=Feed%3A+javalobby%2Ffrontpage+%28Javalobby+%2F+Java+Zone%29|Weak references]] - a grate introduction to managing Javas memory be the use of weak references.
 +  * [[http://​andrigoss.blogspot.com/​2008/​02/​jvm-performance-tuning.html|JVM performance tuning]]
 +  * [[http://​java.sun.com/​performance/​reference/​whitepapers/​tuning.html|Official performance tuning whitepapers by SUN]]
 +  * [[http://​download.oracle.com/​docs/​cd/​E13150_01/​jrockit_jvm/​jrockit/​geninfo/​diagnos/​memman.html|Tuning the Memory Management System ]]
 +  * [[http://​visualvm.java.net/​|Visual VM]] - tool for Java profiling and monitoring
 +  * [[http://​plumbr.eu/​|Plumbr]] - nice tool for memory leaks detection
 +  * [[http://​java.dzone.com/​articles/​java-thread-retained-memory|Retained memory analysis]]
 +  * [[http://​javaeesupportpatterns.blogspot.com/​2012/​01/​how-to-analyze-thread-dump-part1-jvm.html|How to analyze Thread Dump part  1]]
 +  * [[http://​javaeesupportpatterns.blogspot.com/​2012/​01/​how-to-analyze-thread-dump-part2-jvm.html|How to analyze Thread Dump part2]]
 +  * [[http://​javaeesupportpatterns.blogspot.com/​2012/​02/​how-to-analyze-thread-dump-part-3.html|How to analyze Thread Dump part3]]
 +  * [[http://​javaeesupportpatterns.blogspot.com/​2012/​11/​java-heap-dump-are-you-up-to-task.html|Java Heap Dump: Are you up to the task?]]
 +  * [[http://​javaeesupportpatterns.blogspot.com/​2011/​11/​memory-analyzer-download.html | Memory Analyzer download]]
 +  * [[http://​java.dzone.com/​articles/​principles-java-application|Algorithm of performence tuning on DZone]]
 +==== Garbage Collection ====
 +  * [[http://​blog.dynatrace.com/​2011/​05/​11/​how-garbage-collection-differs-in-the-three-big-jvms/​|GC comparison]] - How the garbage collection differs in the three big JVM (HotSpot, JRockit, IBM)
 +  * Book: Richard Jones, Antony Hosking, ​ West Lafayette, ​ Eliot Moss. The Garbage Collection Handbook: The Art of Automatic Memory Management. Chapman & Hall/CRC Applied Algorithms and Data Structures series, 2011
 +  * [[http://​www.infoq.com/​presentations/​Understanding-Java-Garbage-Collection|Understanding Java Garbage Collection]] - a lecture on Java GC
 +  * [[http://​javarevisited.blogspot.com/​2011/​11/​hotspot-jvm-options-java-examples.html|Hotspot jvm options]] - Hotspot jvm options java examples
 +  * Nice introduction to GC and how it works:
 +    * [[http://​insightfullogic.com/​blog/​2013/​feb/​20/​garbage-collection-java-1/​|Part 1 (Intro)]]
 +    * [[http://​insightfullogic.com/​blog/​2013/​mar/​6/​garbage-collection-java-2/​|Part 2 (Parallel)]]
 +    * [[http://​insightfullogic.com/​blog/​2013/​may/​7/​garbage-collection-java-3/​|Part 3 (Concurent)]]
 +    * [[http://​www.insightfullogic.com/​blog/​2013/​jun/​24/​garbage-collection-java-4/​|Part 4 (G1)]] ​   ​
 +===== Other JVM Languages =====
 +  * [[http://​www.groovy-lang.org/​|Grovy]]
 +    * [[http://​docs.groovy-lang.org/​latest/​html/​documentation/​|Documentation and help]]
 +    * [[http://​docs.groovy-lang.org/​latest/​html/​gapi/​|API]]
 +    * [[http://​docs.groovy-lang.org/​latest/​html/​groovy-jdk/​|Groovy JDK]]
 +  * [[http://​www.scala-lang.org/​|Scala]]
 +    * [[http://​www.scala-lang.org/​docu/​files/​ScalaTutorial.pdf|Tutorial]]
 +===== Math projects =====
 +  * [[https://​code.google.com/​p/​efficient-java-matrix-library/​|EJML]] - Efficient Java Matrix Library - one of the most efficient matrix java libraries
 +  * [[http://​ojalgo.org/​javadoc.html|ojAlgo]] - Oj Algorithms Java toolkit including matrix and optimization tooks, one of the most efficient!
 +  * [[https://​github.com/​fommil/​matrix-toolkits-java|MTJ]] - matrix toolkits java
 +  * [[http://​acs.lbl.gov/​~hoschek/​colt/​|Colt]] - set of Java mathematical packages ​
 +    * [[http://​piotr.wendykier.googlepages.com/​parallelcolt|Parallel Colt]] - parallelized Colt package
 +  * [[http://​math.nist.gov/​javanumerics/​|Java-Numerics]]
 +    * [[http://​math.nist.gov/​javanumerics/​jama/​|Jama]] - MathWorks basic java matrix library
 +    * [[ftp://​math.nist.gov/​pub/​Jampack/​Jampack/​AboutJampack.html|Jampack]] - A Java paclage for matrix computation developed by Mathematical and Computations Sciences Division, NIST 
 +  * [[http://​www.netlib.org/​blas/​|NetLib/​BLAS]] - Basic Linear Algebra Subprograms of NetLib
 +  * [[http://​jblas.org/​|JBLAS]] - Linear Algebra for Java
 +  * [[http://​www.singularsys.com/​jep/​doc/​html/​index.html|JEP]] - Jep is a Java library for parsing and evaluating mathematical expressions. ​
 +  * [[http://​commons.apache.org/​math/​|Commons-Math]] - The Apache Commons Mathematics Library
 +  * [[http://​code.google.com/​p/​matlabcontrol/​|Matlab Control]] - Access to Matlab session from independent JVM session by the use of RMI
 +  * [[http://​www.cs.virginia.edu/​~whitehouse/​matlab/​JavaMatlab.html|Java Matlab]] - three ways to control Matlab from Java session ​
 +  * [[http://​java.dzone.com/​articles/​slab-guaranteed-heap-alignment|Slab:​ guaranteed heap alignment on the JVM]]
 +==== Math projects ====
 +  * [[http://​code.google.com/​p/​java-matrix-benchmark/​|Java Matrix Benchmark]] - Benchmark of all Java matrix toolkits
 +    * [[http://​code.google.com/​p/​java-matrix-benchmark/​wiki/​RuntimeCorei7v2600_2013_10|Java Matrix Benchmark of 2013]]
 +===== Java Grids =====
 +  * [[http://​developers.sun.com/​solaris/​articles/​parallel.html|Basics on parallel computing]]
 +  * [[http://​developer.amd.com/​zones/​java/​Pages/​aparapi.aspx|AParAPI]] - A PARallel API, Java API to CUDA/OpenCL - Library provided by AMD, that automatically,​ on runtime, transforms Java Bytecode into OpenCL code and if available run it on GPU or using Thread pool if no GPU available. ​
 +  * [[http://​www.javacodegeeks.com/​2011/​02/​java-forkjoin-parallel-programming.html|Java fork - join]] - an example of Java 7.0 feature
 +  * [[http://​www.coopsoft.com/​ar/​ForkJoinArticle.html|Java fork - join]] - article on implementation of Java join - fork api
 +  * [[http://​download.oracle.com/​javase/​1.5.0/​docs/​api/​java/​util/​concurrent/​package-summary.html|Java concurrent]] - API for Java concurrent programming available since Java 5.0
 +
 +==== Java Grids Comparison ====
 +  * [[http://​java.dzone.com/​articles/​comparison-gridcloud-computing?​utm_source=feedburner&​utm_medium=feed&​utm_campaign=Feed%3A+javalobby%2Ffrontpage+%28Javalobby+%2F+Java+Zone%29 | Grid Engines Comparison Part 1]] - Comparison between Hadop,​GridGain,​Hazelcast and DAC Part 1
 +  * [[http://​java.dzone.com/​articles/​comparison-gridcloud-computing-0?​utm_source=feedburner&​utm_medium=feed&​utm_campaign=Feed%3A+javalobby%2Ffrontpage+%28Javalobby+%2F+Java+Zone%29| Grid Engines Comparison Part 2]] - Comparison between Hadop,​GridGain,​Hazelcast and DAC Part 2
 +==== Java Grids Frameworks ====
 +  * [[http://​incubator.apache.org/​s4/​|Apache S4]] - Java stream processing project supported by Apache
 +  * [[http://​storm-project.net/​|Storm]] - Another very popular Java stream processing project
 +    * [[http://​zeromq.org/​]] - Zero MQ - a library Storm is based on
 +  * [[http://​spark.incubator.apache.org/​|Apache Spark]] - Lightweight Fast Cluster computing - project supported by Apache
 +    * [[https://​www.cs.duke.edu/​~kmoses/​cps516/​dstream.html]] - spark streaming tutorial
 +  * [[http://​www.manageability.org/​blog/​stuff/​open-source-grid-cluster-java|Open-Source Java grid/​cluster tools]]
 +  * [[http://​hadoop.apache.org/​|Apache Hadoop]] - Distributed,​ scalable computing framework ​
 +  * [[http://​www.gridgain.com/​|Grid Gain]] - Grid/Cloud computing framework
 +  * [[http://​www.dacframe.org/​trac/​dac/​|DAC]] - Dynamic Agent Computations - Grid/Cloud computing framework
 +  * [[http://​www.hazelcast.com/​|Hazelcast]] - Clustering and highly scalable data distribution platform
 +  * [[http://​http://​www.cs.vu.nl/​ibis/​|Ibis]] - Grid computing framework
 +  * [[http://​dev.globus.org/​wiki/​CoG_jglobus|jGlobus]] - Toolkit for Globus Greed Computing using Java
 +  * [[http://​proactive.inria.fr/​|ProActive]] - A kind of Java implementation of MPI based on RMI
 +  * [[http://​www.jppf.org/​|JPPF]] - Java Parallel Processing Framework
 +  * [[http://​sourceforge.net/​projects/​jacuda/​|JaCuda]] - an API to deliver CUDA benefits to Java programers
 +  * [[https://​netfiles.uiuc.edu/​dig/​RefactoringInfo/​tools/​ReLooper/​|Auto parralel loop refactoring]]
 +  * [[http://​www.jppf.org/​|JPPF]] - Java Parallel Processing Framework
 +  * [[http://​www.cougaar.org/​|Cougaar]] - an architecture for the construction o distributed agent-based applications
 +  * [[http://​www.oracle.com/​us/​products/​tools/​oracle-grid-engine-075549.html|Oracle Grid Engine]] ​
 +  * [[http://​www2.epcc.ed.ac.uk/​computing/​research_activities/​jomp/​index_1.html|JOMP]] - OpenMP in Java
 +  * [[http://​architects.dzone.com/​articles/​introduction-jms?​utm_source=feedburner&​utm_medium=feed&​utm_campaign=Feed%3A+javalobby%2Ffrontpage+%28Javalobby+%2F+Java+Zone%29|JMS tutorial]]
 +  * [[http://​mesos.apache.org/​|Apache Mesos]] - cluster manager that provides efficient resource isolation and sharing across distributed applications
 +===== Java HPC =====
 +
 +  * [[http://​ateji.blogspot.com/​2010/​09/​java-for-high-performance-computing.html|Java for HPC]]
 +  * [[http://​www.spscicomp.org/​ScicomP15/​slides/​astro/​torra.pdf|High-performance computing in Java: the data processing of Gaia]] by Luri & Torra, presented at SciComp XXL, May 2009
 +  * [[http://​www.des.udc.es/​~gltaboada/​papers/​taboada_pppj09_slides.pdf|Java for High Performance Computing: Assessment of Current Research and Practice]] by Taboada et.al., presented at PPPJ’09 ​
 +  * [[http://​proactive.inria.fr/​userfiles/​file/​papers/​ProActiveJavaStatusforHPC.pdf|Current State of Java for HPC]] by Amedro et.al., Inria Research Report N° 0353, August 2008
 +  * [[http://​blogs.technet.com/​b/​windowshpc/​archive/​2011/​01/​31/​hpcjavabridge-enabling-java-to-java-communication.aspx|HPC Java Bridge ]] - tutorial for support to java of MS HPC platform ​
 +
 +===== Java Chart/​Graphics presentation =====
 +  * [[http://​www.jfree.org/​|JFree.org]] - collection of Java chart projects
 +    * [[http://​www.jfree.org/​jfreechart/​|JFreeChart]] - 2D and 3D Charts
 +    * [[http://​www.jfree.org/​orson/​|Orson]] - JavaBeans Charts based on JFreeChart ​
 +    * [[http://​www.jfree.org/​eastwood/​|Eastwood]] - implementation of the Google Chart API based on JFreeChart
 +  * [[http://​jung.sourceforge.net/​|JUNG]] - Tool for graph visualization and analysis
 +  * [[http://​www.vni.com/​products/​imsl/​jmsl/​jmsl.php|JMSL Numerical Library for Java]] - Advanced Numerical Analysis and Charting for Java
 +  * [[http://​jmathtools.berlios.de/​doku.php|JMathTools]] - JMathTools including JMathPlot for interactive plot in 2D / 3D
 +  * [[http://​code.google.com/​p/​pngj/​|PNG-J]] - pure Java API for reading and writing PNG files
 +  * [[https://​github.com/​plotly|plot.ly]] - Web based Java visualizatoin
 +==== Game frameworks ====
 +  * [[http://​code.google.com/​p/​libgdx/​|libGDX]] -  a cross-platform game development library written in Java, with some JNI code for performance hungry sections.It supports HTML5, Java, Android, iOS, OpenGL ES
 +===== Books/​Materials =====
 +  * [[http://​docstore.mik.ua/​orelly/​java-ent/​dist/​index.htm|O'​Relly:​ Java distributed computing book]]
 +  * [[http://​math.nist.gov/​javanumerics/​reports/​jgfnwg-01.html|Java-Numerics reports]]
 +  * [[http://​insidehpc.com/​2008/​09/​04/​current-state-of-java-for-hpc/​|Current state of Java for HPC]]
 +  * [[http://​getscjp.pl/​|Book and a set of information on obtaining SCJP (pl)]]
 +  * [[http://​www.mariuszlipinski.pl/​|blog with lots of information on Java (pl)]]
 +  * [[http://​www.25hoursaday.com/​CsharpVsJava.html|C#​ vs. Java]]
 +
 +===== Some Java projects =====
 +  * Java to .Net
 +    * [[https://​developer.xamarin.com/​guides/​android/​advanced_topics/​java_integration_overview/​porting_java_to_csharp/​|Xamarin]] allows to port Java ByteCode to IL
 +    * [[http://​caffeine.berlios.de/​site/​resources/​interop.html|Java to .Net projects]]
 +    * [[http://​caffeine.berlios.de/​site/​index.html|Caffeine]]
 +    * [[http://​blog.noelios.com/​2009/​09/​28/​restlet-bridges-ado-net-data-services-and-java/​|Bridge between ADO.Net and Java]]
 +    * [[http://​jni4net.sourceforge.net/​|jni4net]] - .Net 2 Java bridge based on JNI interface  ​
 +    * [[http://​zeroc.com/​index.html|ICE]] - GPL project with an aim to integrate C++,​C#,​Java,​Python etc. Project under supervision of ZerocC
 +  * [[http://​developers.sun.com/​javadb/​|Java DB]] - pure Java Database ​
 +    * [[http://​java.sun.com/​developer/​technicalArticles/​Database/​javadb_10_5/​index.html|Technical article on Java DB]]
 +  * Office integration
 +    * [[http://​jexcelapi.sourceforge.net/​|JExcelApi]] - API for MS Excel documents
 +    * [[http://​xlloop.sourceforge.net/​|XLLoop]] - API to integrate Java functions into Excel documents ​  
 +    * [[http://​blogs.sun.com/​GullFOSS/​entry/​odfdom_0_8_7_the|ODFDOM]] - the OpenDocument Java Library ​
 +    * [[http://​www.joeffice.com/​|JOffice]] - Pure Java based office - recently only alpha version is avaliable
 +  * Media
 +    * [[http://​java.sun.com/​javase/​technologies/​desktop/​media/​jmf/​index.jsp|JMF]] - Java Media Framework ​
 +    * [[http://​jmusic.ci.qut.edu.au/​|JMusic]] - Music composition in Java
 +  * GUI
 +    * [[https://​flamingo.dev.java.net/​|Flamingo]] - a set of components for Java SWING including Ribbon known from .Net
 +      * [[http://​platform.netbeans.org/​tutorials/​nbm-ribbonbar.html|NetBeans + Flemingo]]
 +    * [[http://​doc.trolltech.com/​qtjambi-4.5.2_01/​com/​trolltech/​qt/​qtjambi-index.html|Qt Jambi]] - Qt library supporting Java
 +    * [[https://​github.com/​tdbear/​microba|Microba Swing Controls]] SWING controls for Java including date and time picker etc.
 +  * Java Launchers:
 +    * [[http://​launch4j.sourceforge.net/​|Launch4j]] - creates a launching program for your java program (ex. exe file for windows)
 +    * [[http://​winrun4j.sourceforge.net/​|WinRun4J]] - creates a launching program for your java program (ex. exe file for windows)
 +  * [[http://​java-source.net/​open-source/​cache-solutions|Java Cache projects]] - collection of java os. projects for object caching
 +  * [[http://​commons.apache.org/​|Jakarta]] - a collection of various Java libraries (ex. Math, Net, XML etc.)
 +  * [[http://​www.restlet.org/​|RESTlet]] - REST services for Java
 +  * [[http://​cmusphinx.sourceforge.net/​|CMU Sphinx]] - speach recognition system in Java
 +  * [[http://​code.google.com/​p/​guava-libraries/​|Google-Guava]] - programing in Java using predicates logic (functional programming in Java)  ​
 +  * [[https://​www.orekit.org/​blog/​|Orekit]] - A free low level space dynamics library ​
 +  * [[http://​code.google.com/​p/​rosjava/​|ROSjava]] - ROS is an open-source,​ meta-operating system for your robots
 +    * [[http://​www.ros.org/​wiki/​|ROS]] - Robot Operating System - libraries and tools to help software developers create robot applications.
 +  * [[http://​xstream.codehaus.org/​|xStream]] - simple tool for Object 2 XML and XML to object mapping and transformation
 +    * [[http://​java.dzone.com/​articles/​convert-java-object-xml-and?​utm_source=feedburner&​utm_medium=feed&​utm_campaign=Feed%3A+javalobby%2Ffrontpage+%28Javalobby+%2F+Java+Zone%29|xStrem usage example]]
 +  * [[https://​projectlombok.org/​|Lombok]] -  a set of annotation like in C# for autogeneration of setters, getters, equals, hascode, etc.
 +  * [[https://​libgdx.badlogicgames.com/​|LibGDX]] - Java game framework
 +===== Java Networking =====
 +^ Standard ^ Technology ^
 +| SOAP | JAX-WS |
 +| REST | JAX-RS |
 +| XML | JAXB |
 +| JSON | ??? |
 +
 +  * [[http://​enunciate.codehaus.org/​|Enunciate]] - common framework for creating SOAP, REST, etc. at once
 +  * [[http://​commons.apache.org/​net/​|Apache commons]] - networking tools for the following applications/​protocols:​ //
 +    FTP/FTPS, NNTP, SMTP, POP3, Telnet, TFTP, Finger, Whois, rexec/​rcmd/​rlogin,​ ime (rdate) and Daytime, Echo, Discard, NTP/SNTP //
 +
 +===== Java IDE =====
 +  * [[http://​www.netbeans.org/​|NetBeans]]
 +  * [[http://​www.jetbrains.org|IntelliJ]]
 +  * [[http://​www.oracle.com/​technology/​products/​jdev/​index.html|JDeveloper]]
 +  * [[http://​www.embarcadero.com/​products/​jbuilder|JBuilder]] - Eclipse based IDE
 +  * [[http://​www.cs.brown.edu/​people/​acb/​codebubbles_site.htm|Code Bubbles]] - A new concept of programming IDE's (looks great)
 +  * [[http://​www.eclipse.org/​|Eclipse]]
 +    * [[http://​www.windowbuilderpro.com/​|Window Builder Pro]] - GUI development tool
 +    * [[http://​www.cloudgarden.com/​jigloo/​|Jiglo]] - GUI development tool
 +    * [[http://​eclipsesql.sourceforge.net/​|Eclipse SQL]] - DB viewer for Eclipse
 +
 +===== Java Security =====
 +  * [[http://​java.sun.com/​javase/​6/​docs/​technotes/​guides/​security/​|Java Security]]
 +
 +===== Java Data Mining tools =====
 +{{page>​notatki:​ci:​software#​Java Data Mining tools}}
 +
 +===== Java training =====
 +  * [[http://​www.beingjavaguys.com/​|Being java guys]] - nice portal with many simple examples
 +  * [[http://​javapassion.com/​|Java Passion]]
 +  * [[http://​www.javapractices.com/​home/​HomeAction.do| Java Practices]]
 +  * [[http://​www.roseindia.net/​|Rose India]]
 +  * [[http://​www.vogella.de/​|Vogella]] - Java, Eclipse and Web programming Tutorials
 +  * [[http://​mstachniuk.blogspot.com/​2010/​10/​mechanizm-rmi-remote-method-invocation.html|RMI]] - simple and nice tutorial to Java-RMI (in polish)
 +  * [[http://​www.odi.ch/​prog/​design/​newbies.php|Odi.ch]] - Odis articles about Java but not only
 +  * [[http://​www.java2s.com/​|Java2s.com]]
 +  * [[http://​www.ibm.com/​developerworks/​java/​|IBM - Java]]
 +==== Short tutorials ====
 +  * [[http://​technology-for-human.blogspot.com/​2010/​09/​jsf-20-hello-world-in-netbeans-with.html|JSF2.0 "Hello world" in Netbeans]]
 +  * JSF2.0 new features
 +    * [[http://​technology-for-human.blogspot.com/​2010/​10/​jsf-20-new-featuers-part-1-of-3.html|JSF2.0 new features part 1]]
 +    * [[http://​technology-for-human.blogspot.com/​2010/​10/​jsf-20-new-featuers-part-2-of-3.html|JSF2.0 new features part 2]]
 +    * [[http://​technology-for-human.blogspot.com/​2010/​10/​jsf-20-new-featuers-part-3-of-3.html|JSF2.0 new features part 3]]
 +  * [[http://​java.dzone.com/​articles/​touch-functional-style-plain?​utm_source=feedburner&​utm_medium=feed&​utm_campaign=Feed%3A+javalobby%2Ffrontpage+%28Javalobby+%2F+Java+Zone%29|Java with Predicates]] - introduction to functional programming in Java
 +  * Java Language Features
 +    * [[http://​www.javaworld.com/​javaworld/​jw-09-2013/​130919-j101-java-language-features-tour-part-1.html?​page=9|Generics and assertions]]
 +   
 +===== Java Hosting =====
 +
 +==== Free ====
 +  * [[http://​www.eatj.com/​|www.eatj.com]] - Free Java hosting (be careful free version is restricted)
 +  * [[http://​code.google.com/​appengine/​|Google App Engine]] - a free service from Google that allows the Java applications to be hosted on the cloud
 +  * [[http://​jelastic.com/​|Jelastic]] - Free java cloud with preconfigured Application Server etc.
 +
 +==== Not Free ====
 +  * [[http://​rootnode.net/​wiki/​index.php/​Home|rootnode.net]] - Polish shell accounts servers (unfortunately the fee is 180zł/year = 42Euro/​Year)
 +  * [[http://​www.ovh.pl/​|www.ovh.pl]] - virtual servers hosting also with pre installed Java environment
 +  * [[http://​aws.amazon.com/​ec2/​|Elastic Compute Cloud (EC2)]] - Amazon EC2 – Cloud Hosting
 +  * [[http://​javaprovider.net/​|javaprovider.net]] - is one the cheap Java hosting provider
 +  * [[http://​servlets.com/​isps/​servlet/​ISPViewAll|Servlets.com]] - directory of providers supporting Servlet
 +
 +===== Some Java problems =====
 +  * Java Generic is just dissembling real generics. In real data are stored as Object type, and right before obtaining an object JVM is casting an object on given class. It is specially important when collecting primitive types, because they have to be wrapped to become an object, so your data structure require double memory size. It's also important when you want to have collection of collections,​ because then you loose casting abilities.
 +  * Operators in Java can not be overloaded, so in many scientific applications you loose transparency in your code (ex. matrix operations)
 +  * No two dimensional arrays. This simple feature is also desired in scientific computing
 +  * Logical operators such as //or, and, xor// work just on //int// type, so if you want to operate on ex. //bytes//, you have to do some funny tricks to obtain //byte//. Moreover it increase computational complexity, because each time you have to perform operations on 4 bytes instead of just one.
 +  * No properties and delegates - making coding more complex
 +  * No signed/​unsigned data types. Its specially funny when you have to define net mask, because instead of 255.255.255.0 in Java you have to do it like this -127.-127.-127.0 ​
 +  * No build in support for communication ports like parallel, serial, USB, etc.
 +  * No support for generic arrays ex. class XXX<​T>​{ T[] = new T[10]} is not allowed
 +
 +This simple list is maybe not important for Server side programming,​ but for "every day use" it is a big defect. I my opinion there are two advantages of Java - it's multi-platform,​ and almost every computer has it implemented,​ also for Java exist available for free thousands of packages. (this is also a drawback, specially when you have to choose one that is the best one and you don't know which one). Something that marvels me is that there were plans to fix most of this problems, ​ however they were blocked during JCP process.
 +
 +  * [[http://​shootout.alioth.debian.org/​u64q/​benchmark.php|Benchmark of execution time, memory footprint and source code size of different languages including Java, C, C++, C#, PHP, etc.]]
 +  * [[http://​en.wikipedia.org/​wiki/​Comparison_of_Java_and_C_Sharp|Comparison of Java and C# 1]]
 +  * [[http://​www.oreillynet.com/​pub/​a/​oreilly/​java/​news/​farley_0800.html|Comparison of Java and C# 2]]
 +===== Java 2 C# conversion and vice versa  =====
 +  * [[http://​www.tangiblesoftwaresolutions.com/​|Tangible]] - a set of convertors between c#, Java, C++ and VB, more over it works more details on:
 +    * [[http://​lpeer.blogspot.com/​2010/​04/​switching-from-c-to-java.html|Description]] - Red-Hat description of switching from C# to Java
 +    * [[http://​www.semdesigns.com/​Company/​Publications/​CrosstalkArticle/​CrossTalk-05-2005.html|Other example]] ​
 +  * [[https://​net2java.dev.java.net/​source/​browse/​net2java/​ReadMe.txt?​rev=1.1&​view=markup|Net2Java]] - Java.Net project
 +  * [[http://​www.jnbridge.com/​|JNBridge]] ​ Java to .Net bridge - allow calling .Net libraries form Java and vice versa
 +
 +===== Some Java advantages over .Net =====
 +Java similar to .Net use JIT and AOT compilation,​ however there is a big difference between two implementations of Java and .Net. In .Net application code is translated into machine code when starting a program, while in Java the B-code is first interpreted and during that time it is optimized (usually its 3 phase process) so in the last phase the final optimized execution machine code is obtained. There are benefits of that solution. ​
 +  * Example 1 - If statement optimization:​
 +
 +        (size = 500000000)
 +        public static bool RunTest(int size){
 +            bool a = true, b = false, c = true, d = false;
 +            int i, j;
 +            for (i = 0; i <= size; i++){
 +                if (a | b){
 +                    a = !c;
 +                    b = !d;
 +                }
 +                else{
 +                    a = c;
 +                    b = d;
 +                }
 +            }
 +            return b;
 +        }
 +
 +  *
 +    * .Net execution time - around 1.5s without optimization 2.5s
 +    * Java execution time (after first 2 phases) - 0.0s 
 +Why is that - because Java compiler and JIT knows that b = true (always)!!! so the code of RunTest method is just //return true//
 +
 +  * Example 2 - Death code removal:
 +
 +    (size = 5000000)
 +    public static boolean RunTest(int size) {
 +        boolean a = true, b = false;
 +        int i, j;
 +        double x = 0.12, y = 0.13, z = 0.14;
 +        //Death code
 +        for (i = 0; i <= size; i++) {
 +            x += 0.0001;
 +            z += 0.00012;
 +            y += Math.log(Math.atan(Math.sqrt(x / z)));
 +        }
 +        //End of death code
 +        b = Math.random() > 0.5;
 +        for (i = 0; i <= size; i++) {
 +            if (b) {
 +                a = b;
 +            } else {
 +                a = !b;
 +            }
 +        }
 +        return a;
 +    }
 +
 +  *
 +    * .Net execution time - around 0.6s without optimization 4.3s
 +    * Java execution time (after first 2 phases) - 0.6s 
 +Why is that - because Death code is useless so Java knows it has to remove it, and .Net know it only with optimization turned on
 +
 +  * Example 3 - Expression simplification:​
 +
 +    (size = 500000000)
 +    public static int RunTest(int size) {
 +        int[] a = new int[4];
 +        int i, j;
 +        ​
 +        for (i = 0; i <= size; i++) {
 +            a[0] += i + 0 + i + 0;
 +            a[1] += i * 0;
 +            a[2] += i - i + 2 - 5 +3;
 +            a[3] += 1 + i + 1;
 +        }
 +        return a.hashCode();​
 +    }
 +
 +  *
 +    * .Net execution time - around 5.5s without optimization 8.5s
 +    * Java execution time - 1.1s 
 +Why is that - because Java during compilation to B-code makes code optimization so that a[0] += i+i; a[1] = 0; a[2] = 0; a[3] = i + 2; (I was surprised that C# compiler doesn'​t do that)