|
1 .. -*- coding: utf-8; -*- |
|
2 |
|
3 ================ |
|
4 Java language. |
|
5 ================ |
|
6 |
|
7 Class version. |
|
8 ============== |
|
9 |
|
10 See value of 6 and 8 bytes in .class file: |
|
11 |
|
12 {0xCA, 0xFE, 0xBA, 0xBE, 0x00, minor, 0x00, major} |
|
13 |
|
14 major minor Java platform version |
|
15 45 0x27 3 1.0 |
|
16 45 0x27 3 1.1 |
|
17 46 0x28 0 1.2 |
|
18 47 0x29 0 1.3 |
|
19 48 0x30 0 1.4 |
|
20 49 0x31 0 1.5 |
|
21 50 0x32 0 1.6 |
|
22 |
|
23 Access modifiers. |
|
24 ================= |
|
25 |
|
26 Public. |
|
27 ------- |
|
28 |
|
29 * Public class is visible in other packages. |
|
30 * Public field is visible everywhere (class must be public too). |
|
31 |
|
32 Private. |
|
33 -------- |
|
34 |
|
35 * Private variables or methods may be used only by an instance of the same |
|
36 class that declares the variable or method |
|
37 * A private feature may only be accessed by the class that owns the feature. |
|
38 |
|
39 Protected. |
|
40 ---------- |
|
41 |
|
42 * Is available to all classes in the same package and also available to all |
|
43 subclasses of the class that owns the protected feature. |
|
44 * This access is provided even to subclasses that reside in a different |
|
45 package from the class that owns the protected feature. |
|
46 |
|
47 default. |
|
48 -------- |
|
49 |
|
50 What you get by default ie, without any access modifier. |
|
51 |
|
52 * It means that it is visible to all within a particular package. |
|
53 |
|
54 static. |
|
55 ------- |
|
56 |
|
57 * Static means one per class, not one for each object no matter how many |
|
58 instance of a class might exist. This means that you can use them without |
|
59 creating an instance of a class. |
|
60 * Static methods are implicitly final, because overriding is done based on |
|
61 the type of the object, and static methods are attached to a class, not an |
|
62 object. |
|
63 * A static method in a superclass can be shadowed by another static method in |
|
64 a subclass, as long as the original method was not declared final. |
|
65 * You can't override a static method with a nonstatic method. |
|
66 |
|
67 final. |
|
68 ------ |
|
69 |
|
70 * A final class can't be extended ie., final class may not be subclassed. |
|
71 * A final method can't be overridden when its class is inherited. |
|
72 * You can't change value of a final variable. |
|
73 |
|
74 Exceptions. |
|
75 =========== |
|
76 |
|
77 A checked exception is some subclass of Exception (or Exception itself), |
|
78 excluding class RuntimeException and its subclasses. |
|
79 |
|
80 Unchecked exceptions are RuntimeException and any of its subclasses. Class |
|
81 Error and its subclasses also are unchecked. With an unchecked exception, |
|
82 however, the compiler doesn't force client programmers either to catch the |
|
83 exception or declare it in a throws clause. |
|
84 |
|
85 Inner classes. |
|
86 ============== |
|
87 |
|
88 Nested top-level classes. |
|
89 ------------------------- |
|
90 |
|
91 If you declare a class within a class and specify the static modifier, the |
|
92 compiler treats the class just like any other top-level class. |
|
93 |
|
94 Any class outside the declaring class accesses the nested class with the |
|
95 declaring class name acting similarly to a package. eg, outer.inner. Top-level |
|
96 inner classes implicitly have access only to static variables. There can also |
|
97 be inner interfaces. All of these are of the nested top-level variety. |
|
98 |
|
99 Member classes. |
|
100 --------------- |
|
101 |
|
102 Member inner classes are just like other member methods and member variables |
|
103 and access to the member class is restricted, just like methods and variables. |
|
104 This means a public member class acts similarly to a nested top-level class. |
|
105 |
|
106 The primary difference between member classes and nested top-level classes is |
|
107 that member classes have access to the specific instance of the enclosing |
|
108 class. |
|
109 |
|
110 Local classes. |
|
111 -------------- |
|
112 |
|
113 Local classes are like local variables, specific to a block of code. Their |
|
114 visibility is only within the block of their declaration. In order for the |
|
115 class to be useful beyond the declaration block, it would need to implement a |
|
116 more publicly available interface. |
|
117 |
|
118 Because local classes are not members, the modifiers public, protected, |
|
119 private, and static are not usable. |
|
120 |
|
121 Anonymous classes. |
|
122 ------------------ |
|
123 |
|
124 Anonymous inner classes extend local inner classes one level further. As |
|
125 anonymous classes have no name, you cannot provide a constructor. |
|
126 |
|
127 64-bit problem. |
|
128 =============== |
|
129 |
|
130 http://www.java.com/en/download/faq/java_win64bit.xml |
|
131 Which version of Java should I download for my 64-bit Windows |
|
132 operating system? |
|
133 http://java.sun.com/javase/6/webnotes/install/system-configurations.html |
|
134 Java SE 6 Release Notes Supported System Configurations |
|
135 |
|
136 Java performance. |
|
137 ================= |
|
138 |
|
139 http://java.sun.com/performance/reference/whitepapers/5.0_performance.html |
|
140 http://java.sun.com/performance/reference/whitepapers/6_performance.html |
|
141 |
|
142 Creating jar. |
|
143 ============= |
|
144 :: |
|
145 |
|
146 $ jar cf myFile.jar *.class |
|
147 $ jar cmf myManifestFile myFile.jar *.class |
|
148 $ jar -cfe Main.jar foo.Main foo/Main.class |
|
149 |
|
150 Profiling java. |
|
151 =============== |
|
152 :: |
|
153 |
|
154 $ java -Xprof com.vendor.product.Clazz |
|
155 |