java.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Fri, 04 May 2012 22:54:05 +0300
changeset 1269 69d8c32d7bf9
parent 1238 53da16ba1897
child 1270 af6cbb1b5888
permissions -rw-r--r--
Find jar by class.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     1
.. -*- coding: utf-8; -*-
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     2
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     3
================
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     4
 Java language.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     5
================
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     6
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     7
Class version.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     8
==============
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     9
1216
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    10
  =========  ====== =====================
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    11
  major      minor  Java platform version
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    12
  =========  ====== =====================
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    13
  45 0x27    3      1.0
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    14
  45 0x27    3      1.1
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    15
  46 0x28    0      1.2
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    16
  47 0x29    0      1.3
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    17
  48 0x30    0      1.4
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    18
  49 0x31    0      1.5
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    19
  50 0x32    0      1.6
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    20
  =========  ====== =====================
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    21
1216
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    22
where ``minor`` and ``major`` are value of 6 and 8 bytes in .class file::
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    23
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    24
  0xCA, 0xFE, 0xBA, 0xBE, 0x00, minor, 0x00, major
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    25
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    26
Access modifiers.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    27
=================
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    28
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    29
Public.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    30
-------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    31
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    32
 * Public class is visible in other packages.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    33
 * Public field is visible everywhere (class must be public too).
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    34
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    35
Private.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    36
--------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    37
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    38
 * Private variables or methods may be used only by an instance of the same
1216
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    39
   class that declares the variable or method
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    40
 * A private feature may only be accessed by the class that owns the feature.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    41
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    42
Protected.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    43
----------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    44
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    45
 * Is available to all classes in the same package and also available to all
1216
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    46
   subclasses of the class that owns the protected feature.
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    47
 * This access is provided even to subclasses that reside in a different
1216
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    48
   package from the class that owns the protected feature.
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    49
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    50
default.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    51
--------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    52
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    53
What you get by default ie, without any access modifier.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    54
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    55
 * It means that it is visible to all within a particular package.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    56
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    57
static.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    58
-------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    59
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    60
 * Static means one per class, not one for each object no matter how many
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    61
   instance of a class might exist. This means that you can use them without
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    62
   creating an instance of a class.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    63
 * Static methods are implicitly final, because overriding is done based on
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    64
   the type of the object, and static methods are attached to a class, not an
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    65
   object.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    66
 * A static method in a superclass can be shadowed by another static method in
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    67
   a subclass, as long as the original method was not declared final.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    68
 * You can't override a static method with a nonstatic method.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    69
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    70
final.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    71
------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    72
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    73
 * A final class can't be extended ie., final class may not be subclassed.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    74
 * A final method can't be overridden when its class is inherited.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    75
 * You can't change value of a final variable.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    76
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    77
Exceptions.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    78
===========
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    79
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    80
A checked exception is some subclass of Exception (or Exception itself),
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    81
excluding class RuntimeException and its subclasses.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    82
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    83
Unchecked exceptions are RuntimeException and any of its subclasses. Class
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    84
Error and its subclasses also are unchecked. With an unchecked exception,
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    85
however, the compiler doesn't force client programmers either to catch the
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    86
exception or declare it in a throws clause.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    87
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    88
Inner classes.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    89
==============
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    90
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    91
Nested top-level classes.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    92
-------------------------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    93
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    94
If you declare a class within a class and specify the static modifier, the
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    95
compiler treats the class just like any other top-level class.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    96
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    97
Any class outside the declaring class accesses the nested class with the
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    98
declaring class name acting similarly to a package. eg, outer.inner. Top-level
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    99
inner classes implicitly have access only to static variables. There can also
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   100
be inner interfaces. All of these are of the nested top-level variety.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   101
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   102
Member classes.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   103
---------------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   104
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   105
Member inner classes are just like other member methods and member variables
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   106
and access to the member class is restricted, just like methods and variables.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   107
This means a public member class acts similarly to a nested top-level class.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   108
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   109
The primary difference between member classes and nested top-level classes is
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   110
that member classes have access to the specific instance of the enclosing
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   111
class.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   112
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   113
Local classes.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   114
--------------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   115
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   116
Local classes are like local variables, specific to a block of code. Their
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   117
visibility is only within the block of their declaration. In order for the
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   118
class to be useful beyond the declaration block, it would need to implement a
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   119
more publicly available interface.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   120
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   121
Because local classes are not members, the modifiers public, protected,
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   122
private, and static are not usable.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   123
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   124
Anonymous classes.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   125
------------------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   126
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   127
Anonymous inner classes extend local inner classes one level further. As
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   128
anonymous classes have no name, you cannot provide a constructor.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   129
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   130
64-bit problem.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   131
===============
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   132
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   133
  http://www.java.com/en/download/faq/java_win64bit.xml
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   134
                Which version of Java should I download for my 64-bit Windows
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   135
                operating system?
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   136
  http://java.sun.com/javase/6/webnotes/install/system-configurations.html
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   137
                Java SE 6 Release Notes Supported System Configurations
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   138
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   139
Java performance.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   140
=================
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   141
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   142
  http://java.sun.com/performance/reference/whitepapers/5.0_performance.html
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   143
  http://java.sun.com/performance/reference/whitepapers/6_performance.html
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   144
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   145
Creating jar.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   146
=============
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   147
::
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   148
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   149
  $ jar cf myFile.jar *.class
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   150
  $ jar cmf myManifestFile myFile.jar *.class
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   151
  $ jar -cfe Main.jar foo.Main foo/Main.class
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   152
1215
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   153
Profiling Java.
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   154
===============
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   155
::
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   156
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   157
  $ java -Xprof com.vendor.product.Clazz
1214
fe28cec0bb40 java -Xrunhprof:help
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1213
diff changeset
   158
  $ java -Xrunhprof:help
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   159
1215
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   160
Debugging Java.
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   161
===============
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   162
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   163
Compile with ``-g`` to preserve source code information::
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   164
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   165
  $ javac -g -cp $CLASSPATH -sourcepath $SRC_DIR -d $BUILD_DIR
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   166
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   167
To run Java program in debugger::
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   168
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   169
  $ jdb -cp $CLASSPATH -sourcepath $SRC_DIR
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   170
1238
53da16ba1897 -Xrunjdwp:transport
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1216
diff changeset
   171
To attach to Java application you firstly must run application with (use
53da16ba1897 -Xrunjdwp:transport
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1216
diff changeset
   172
``dt_shmem`` for Windows and ``dt_socket`` for Linux)::
1215
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   173
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   174
  $ java -Xdebug -Xrunjdwp:transport=dt_shmem,server=y,suspend=n,address=$PORT \
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   175
    com.vendor.product.Clazz
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   176
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   177
and then attach with debugger::
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   178
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   179
  $ jdb -attach $PORT
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   180
1269
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   181
Find jar by class.
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   182
==================
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   183
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   184
  http://www.jarfinder.com
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   185