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