Profiling java.
authorOleksandr Gavenko <gavenkoa@gmail.com>
Tue, 07 Feb 2012 16:42:08 +0200
changeset 1213 06623bbdb097
parent 1212 c3123d16bf3d
child 1214 fe28cec0bb40
Profiling java.
java.rst
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/java.rst	Tue Feb 07 16:42:08 2012 +0200
@@ -0,0 +1,155 @@
+.. -*- coding: utf-8; -*-
+
+================
+ Java language.
+================
+
+Class version.
+==============
+
+See value of 6 and 8 bytes in .class file:
+
+  {0xCA, 0xFE, 0xBA, 0xBE, 0x00, minor, 0x00, major}
+
+   major   minor  Java platform version
+  45 0x27    3           1.0
+  45 0x27    3           1.1
+  46 0x28    0           1.2
+  47 0x29    0           1.3
+  48 0x30    0           1.4
+  49 0x31    0           1.5
+  50 0x32    0           1.6
+
+Access modifiers.
+=================
+
+Public.
+-------
+
+ * Public class is visible in other packages.
+ * Public field is visible everywhere (class must be public too).
+
+Private.
+--------
+
+ * Private variables or methods may be used only by an instance of the same
+ class that declares the variable or method
+ * A private feature may only be accessed by the class that owns the feature.
+
+Protected.
+----------
+
+ * Is available to all classes in the same package and also available to all
+ subclasses of the class that owns the protected feature.
+ * This access is provided even to subclasses that reside in a different
+ package from the class that owns the protected feature.
+
+default.
+--------
+
+What you get by default ie, without any access modifier.
+
+ * It means that it is visible to all within a particular package.
+
+static.
+-------
+
+ * Static means one per class, not one for each object no matter how many
+   instance of a class might exist. This means that you can use them without
+   creating an instance of a class.
+ * Static methods are implicitly final, because overriding is done based on
+   the type of the object, and static methods are attached to a class, not an
+   object.
+ * A static method in a superclass can be shadowed by another static method in
+   a subclass, as long as the original method was not declared final.
+ * You can't override a static method with a nonstatic method.
+
+final.
+------
+
+ * A final class can't be extended ie., final class may not be subclassed.
+ * A final method can't be overridden when its class is inherited.
+ * You can't change value of a final variable.
+
+Exceptions.
+===========
+
+A checked exception is some subclass of Exception (or Exception itself),
+excluding class RuntimeException and its subclasses.
+
+Unchecked exceptions are RuntimeException and any of its subclasses. Class
+Error and its subclasses also are unchecked. With an unchecked exception,
+however, the compiler doesn't force client programmers either to catch the
+exception or declare it in a throws clause.
+
+Inner classes.
+==============
+
+Nested top-level classes.
+-------------------------
+
+If you declare a class within a class and specify the static modifier, the
+compiler treats the class just like any other top-level class.
+
+Any class outside the declaring class accesses the nested class with the
+declaring class name acting similarly to a package. eg, outer.inner. Top-level
+inner classes implicitly have access only to static variables. There can also
+be inner interfaces. All of these are of the nested top-level variety.
+
+Member classes.
+---------------
+
+Member inner classes are just like other member methods and member variables
+and access to the member class is restricted, just like methods and variables.
+This means a public member class acts similarly to a nested top-level class.
+
+The primary difference between member classes and nested top-level classes is
+that member classes have access to the specific instance of the enclosing
+class.
+
+Local classes.
+--------------
+
+Local classes are like local variables, specific to a block of code. Their
+visibility is only within the block of their declaration. In order for the
+class to be useful beyond the declaration block, it would need to implement a
+more publicly available interface.
+
+Because local classes are not members, the modifiers public, protected,
+private, and static are not usable.
+
+Anonymous classes.
+------------------
+
+Anonymous inner classes extend local inner classes one level further. As
+anonymous classes have no name, you cannot provide a constructor.
+
+64-bit problem.
+===============
+
+  http://www.java.com/en/download/faq/java_win64bit.xml
+                Which version of Java should I download for my 64-bit Windows
+                operating system?
+  http://java.sun.com/javase/6/webnotes/install/system-configurations.html
+                Java SE 6 Release Notes Supported System Configurations
+
+Java performance.
+=================
+
+  http://java.sun.com/performance/reference/whitepapers/5.0_performance.html
+  http://java.sun.com/performance/reference/whitepapers/6_performance.html
+
+Creating jar.
+=============
+::
+
+  $ jar cf myFile.jar *.class
+  $ jar cmf myManifestFile myFile.jar *.class
+  $ jar -cfe Main.jar foo.Main foo/Main.class
+
+Profiling java.
+===============
+::
+
+  $ java -Xprof com.vendor.product.Clazz
+