# HG changeset patch # User Oleksandr Gavenko # Date 1328625728 -7200 # Node ID 06623bbdb0970dc151a2848e7db6972cc9751f92 # Parent c3123d16bf3d16e03ba2ac797f43c62f7b9417c9 Profiling java. diff -r c3123d16bf3d -r 06623bbdb097 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 +