java.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Tue, 07 Feb 2023 00:39:25 +0200
changeset 2554 c83fb8d3809f
parent 2407 5a04e048c3a4
permissions -rw-r--r--
Removed unrelated data.
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
================
1346
a2fbf50a43f4 Fix: Has no 'contents::' directive.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1334
diff changeset
     6
.. contents::
1905
fba288d59662 Include only local subsections into TOC. This prevent duplication of
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1848
diff changeset
     7
   :local:
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
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    12
=========  ====== =====================
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    13
major      minor  Java platform version
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    14
=========  ====== =====================
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    15
45 0x27    3      1.0
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    16
45 0x27    3      1.1
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    17
46 0x28    0      1.2
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    18
47 0x29    0      1.3
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    19
48 0x30    0      1.4
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    20
49 0x31    0      5.0
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    21
50 0x32    0      6.0
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    22
51 0x33    0      7
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    23
52 0x34    0      8
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    24
=========  ====== =====================
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    25
1216
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    26
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
    27
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    28
  0xCA, 0xFE, 0xBA, 0xBE, 0x00, minor, 0x00, major
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    29
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    30
Access modifiers.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    31
=================
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    32
2405
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2401
diff changeset
    33
``public``:
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    34
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    35
* Public class is visible in other packages.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    36
* Public field is visible everywhere (class must be public too).
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    37
2405
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2401
diff changeset
    38
``private``:
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    39
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    40
* Private variables or methods may be used only by an instance of the same
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    41
  class that declares the variable or method
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    42
* A private feature may only be accessed by the class that owns the feature.
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    43
2405
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2401
diff changeset
    44
``protected``:
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    45
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    46
* Is available to all classes in the same package and also available to all
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    47
  subclasses of the class that owns the protected feature.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    48
* This access is provided even to subclasses that reside in a different
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    49
  package from the class that owns the protected feature.
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    50
2405
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2401
diff changeset
    51
Default (ie, without any access modifier):
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    52
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    53
* It means that it is visible to all within a particular package.
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    54
2406
ddc35b96ecc1 Removed deprecated info.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2405
diff changeset
    55
``static``:
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    56
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    57
* Static means one per class, not one for each object no matter how many
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    58
  instance of a class might exist. This means that you can use them without
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    59
  creating an instance of a class.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    60
* Static methods are implicitly final, because overriding is done based on
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    61
  the type of the object, and static methods are attached to a class, not an
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    62
  object.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    63
* A static method in a superclass can be shadowed by another static method in
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    64
  a subclass, as long as the original method was not declared final.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    65
* You can't override a static method with a nonstatic method.
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    66
2406
ddc35b96ecc1 Removed deprecated info.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2405
diff changeset
    67
``final``:
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    68
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    69
* A final class can't be extended ie., final class may not be subclassed.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    70
* A final method can't be overridden when its class is inherited.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    71
* You can't change value of a final variable.
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    72
2406
ddc35b96ecc1 Removed deprecated info.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2405
diff changeset
    73
Exceptions
ddc35b96ecc1 Removed deprecated info.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2405
diff changeset
    74
==========
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    75
2406
ddc35b96ecc1 Removed deprecated info.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2405
diff changeset
    76
A checked exception is some subclass of ``Exception`` (or ``Exception`` itself),
ddc35b96ecc1 Removed deprecated info.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2405
diff changeset
    77
excluding class ``RuntimeException`` and its subclasses.
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    78
2406
ddc35b96ecc1 Removed deprecated info.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2405
diff changeset
    79
Unchecked exceptions are ``RuntimeException`` and any of its subclasses. Class
ddc35b96ecc1 Removed deprecated info.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2405
diff changeset
    80
``Error`` and its subclasses also are unchecked. With an unchecked exception,
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    81
however, the compiler doesn't force client programmers either to catch the
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    82
exception or declare it in a throws clause.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    83
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    84
Inner classes.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    85
==============
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    86
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    87
Nested top-level classes.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    88
-------------------------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    89
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    90
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
    91
compiler treats the class just like any other top-level class.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    92
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    93
Any class outside the declaring class accesses the nested class with the
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    94
declaring class name acting similarly to a package. eg, outer.inner. Top-level
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    95
inner classes implicitly have access only to static variables. There can also
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    96
be inner interfaces. All of these are of the nested top-level variety.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    97
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    98
Member classes.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    99
---------------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   100
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   101
Member inner classes are just like other member methods and member variables
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   102
and access to the member class is restricted, just like methods and variables.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   103
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
   104
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   105
The primary difference between member classes and nested top-level classes is
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   106
that member classes have access to the specific instance of the enclosing
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   107
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
Local classes.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   110
--------------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   111
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   112
Local classes are like local variables, specific to a block of code. Their
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   113
visibility is only within the block of their declaration. In order for the
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   114
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
   115
more publicly available interface.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   116
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   117
Because local classes are not members, the modifiers public, protected,
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   118
private, and static are not usable.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   119
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   120
Anonymous classes.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   121
------------------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   122
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   123
Anonymous inner classes extend local inner classes one level further. As
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   124
anonymous classes have no name, you cannot provide a constructor.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   125
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   126
Java performance.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   127
=================
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   128
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   129
http://java.sun.com/performance/reference/whitepapers/5.0_performance.html
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   130
http://java.sun.com/performance/reference/whitepapers/6_performance.html
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   131
2407
5a04e048c3a4 List of all supported flags by java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2406
diff changeset
   132
Java flags
5a04e048c3a4 List of all supported flags by java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2406
diff changeset
   133
==========
5a04e048c3a4 List of all supported flags by java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2406
diff changeset
   134
5a04e048c3a4 List of all supported flags by java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2406
diff changeset
   135
List of all supported flags by ``java``::
5a04e048c3a4 List of all supported flags by java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2406
diff changeset
   136
5a04e048c3a4 List of all supported flags by java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2406
diff changeset
   137
  java -XX:+PrintFlagsFinal -version
5a04e048c3a4 List of all supported flags by java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2406
diff changeset
   138
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   139
Creating jar.
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
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   143
  $ jar cf myFile.jar *.class
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   144
  $ jar cmf myManifestFile myFile.jar *.class
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   145
  $ jar -cfe Main.jar foo.Main foo/Main.class
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   146
1215
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   147
Profiling Java.
1213
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
  $ java -Xprof com.vendor.product.Clazz
1214
fe28cec0bb40 java -Xrunhprof:help
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1213
diff changeset
   152
  $ java -Xrunhprof:help
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   153
1215
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   154
Debugging Java.
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   155
===============
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   156
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   157
Compile with ``-g`` to preserve source code information::
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   158
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   159
  $ javac -g -cp $CLASSPATH -sourcepath $SRC_DIR -d $BUILD_DIR
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   160
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   161
To run Java program in debugger::
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
  $ jdb -cp $CLASSPATH -sourcepath $SRC_DIR
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   164
2401
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   165
To attach to Java application you should run application for Java 1.4::
1215
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
  $ java -Xdebug -Xrunjdwp:transport=dt_shmem,server=y,suspend=n,address=$PORT \
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   168
    com.vendor.product.Clazz
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   169
2401
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   170
for Java including & above 5::
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   171
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   172
  $ java -agentlib:jdwp=transport=dt_shmem,server=y,suspend=n,address=$PORT \
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   173
    com.vendor.product.Clazz
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   174
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   175
for Java 9 you need to set host::
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   176
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   177
  $ java -agentlib:jdwp=transport=dt_shmem,server=y,suspend=n,address=*:$PORT \
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   178
    com.vendor.product.Clazz
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   179
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   180
  $ java -agentlib:jdwp=transport=dt_shmem,server=y,suspend=n,address=localhost:$PORT \
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   181
    com.vendor.product.Clazz
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   182
1215
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   183
and then attach with debugger::
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   184
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   185
  $ jdb -attach $PORT
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   186
2357
107d39975281 For ``transport`` use.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2350
diff changeset
   187
For ``transport`` use:
107d39975281 For ``transport`` use.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2350
diff changeset
   188
107d39975281 For ``transport`` use.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2350
diff changeset
   189
* ``dt_shmem`` for Windows
107d39975281 For ``transport`` use.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2350
diff changeset
   190
* ``dt_socket`` for Linux
107d39975281 For ``transport`` use.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2350
diff changeset
   191
1848
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   192
Creating thread dump.
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   193
=====================
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   194
1629
32f8c509119d Dump current thread traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1563
diff changeset
   195
Dump current thread traces and memory statistic to stdout::
32f8c509119d Dump current thread traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1563
diff changeset
   196
32f8c509119d Dump current thread traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1563
diff changeset
   197
  $ kill -QUIT $PID
32f8c509119d Dump current thread traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1563
diff changeset
   198
1848
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   199
If application started with ``nohup`` redirect output to selected file::
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   200
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   201
  $ nohup java -cp ... com.app.Main  >$NOHUP.log &
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   202
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   203
or check default ``nohup.out`` or ``$HOME/nohup.out`` file.
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   204
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   205
Alternatively use ``jstack`` utility for Java version 1.5 and above::
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   206
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   207
  $ jstack -l $PID  >$DUMP.out
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   208
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   209
``jstack`` should be runned from same user as probing application::
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   210
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   211
  $ sudo -u $USER jstack -l $PID  >$DUMP.out
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   212
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   213
.. NOTE:: Thread information preserved in heap dump and can be reviewed in
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   214
          ``visualvm``.
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   215
1845
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   216
Creating heap dump from Java application.
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   217
=========================================
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   218
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   219
Find pid of Java process::
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   220
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   221
  $ jps -l -v
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   222
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   223
Save dump to file::
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   224
2405
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2401
diff changeset
   225
  $ jmap -dump:format=b,file=heap.hprof $PID
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2401
diff changeset
   226
  $ sudo -u $USR jcmd $PID GC.heap_dump heap.hprof
1845
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   227
1847
1333ab54cab1 ``live`` option.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1846
diff changeset
   228
With ``live`` option only reachable objects are dumped::
1333ab54cab1 ``live`` option.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1846
diff changeset
   229
2405
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2401
diff changeset
   230
  $ jmap -dump:live,format=b,file=heap.hprof  $PID
1847
1333ab54cab1 ``live`` option.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1846
diff changeset
   231
2350
1141a548cbb6 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
   232
Creating heap dump on OutOfMemory error
1141a548cbb6 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
   233
=======================================
1846
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   234
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   235
Run Java application with::
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   236
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   237
  -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heap.dump
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   238
2350
1141a548cbb6 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
   239
https://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/clopts.html
1141a548cbb6 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
   240
  B.1.2 -XX:+HeapDumpOnOutOfMemoryError Option.
1141a548cbb6 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
   241
1643
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   242
Debug class loading.
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   243
====================
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   244
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   245
To dump class loading and unloading to ``System.out`` add to ``java`` opts::
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   246
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   247
  $ java -XX:+TraceClassLoading -XX:+TraceClassUnloading ...
1644
54d482709640 -verbose:class
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1643
diff changeset
   248
  $ java -verbose:class ...
1643
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   249
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   250
To review loaded classes explore heap dump in ``visualvm`` (visit "Classes"
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   251
tab).
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   252
1687
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   253
Decompile class file.
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   254
=====================
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   255
::
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   256
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   257
  $ javap -v -p -c My.java
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   258
2127
782577d2e7f0 http://jd.benow.ca/
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
   259
Graphical tools are available at:
782577d2e7f0 http://jd.benow.ca/
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
   260
782577d2e7f0 http://jd.benow.ca/
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
   261
http://jd.benow.ca/
782577d2e7f0 http://jd.benow.ca/
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
   262
  JD-GUI is a standalone graphical utility that displays Java source codes of
782577d2e7f0 http://jd.benow.ca/
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
   263
  “.class” files. You can browse the reconstructed source code with the JD-GUI
782577d2e7f0 http://jd.benow.ca/
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
   264
  for instant access to methods and fields.
782577d2e7f0 http://jd.benow.ca/
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
   265
1269
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   266
Find jar by class.
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   267
==================
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   268
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   269
* http://mvnrepository.com/search.html?query=PKG
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   270
* http://www.jarfinder.com
1269
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   271
1686
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   272
Set default Java in Debian.
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   273
===========================
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   274
::
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   275
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   276
  $ update-java-alternatives -l
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   277
  $ sudo update-java-alternatives -s java-1.8.0-openjdk-i386
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   278
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   279
or individually for each executable::
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   280
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   281
  $ sudo update-alternatives --config java
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   282
1655
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   283
Import SSL certificate.
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   284
=======================
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   285
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   286
Get cert with::
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   287
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   288
  $ openssl s_client -connect promin-test.it.loc:433
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   289
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   290
  -----BEGIN CERTIFICATE-----
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   291
  ...
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   292
  -----END CERTIFICATE-----
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   293
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   294
or by opening URL in broswer and exporting in "Page info" ==> "Security" menu.
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   295
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   296
Call import utility with default ``changeit`` password::
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   297
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   298
  $ keytool -importcert -file $YOUR.crt -keystore $JAVA_HOME/jre/lib/security/cacert -alias $ANY -storepass changeit
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   299
  $ keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacert -storepass changeit
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   300
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   301
Import certificate system wide in Debian by (note, ``.crt`` extention is
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   302
mandatory)::
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   303
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   304
  $ sudo mkdir /usr/share/ca-certificates/$ANY/    # don't mess with other certs
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   305
  $ sudo cp /tmp/$YOUR.crt /usr/share/ca-certificates/$ANY/
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   306
  $ sudo dpkg-reconfigure --force ca-certificates  # check your cert in curses GUI!
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   307
  $ sudo update-ca-certificates --fresh --verbose
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   308
1379
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   309
Java EE versions.
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   310
=================
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   311
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   312
======= ======== ======== ========
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   313
Java EE Servlet  JSP      JSTL
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   314
======= ======== ======== ========
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   315
6       3.0      2.2      -
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   316
5       2.5      2.1      1.2
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   317
1.4     2.4      2.0      1.1
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   318
1.2     2.3      1.2      1.0
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   319
======= ======== ======== ========
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   320
1380
428a226bf835 Specify file name.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1379
diff changeset
   321
To set servlet version check ``WEB-INF/web.xml``::
1379
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   322
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   323
  <web-app xmlns="http://java.sun.com/xml/ns/javaee" version="3.0">
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   324
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   325
See:
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   326
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   327
http://en.wikipedia.org/wiki/Java_EE_version_history
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   328
  Java EE version history.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   329
http://jcp.org/aboutJava/communityprocess/final/jsr315/index.html
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   330
  Servlet 3.0 Specification
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   331
http://jcp.org/aboutJava/communityprocess/mrel/jsr154/index.html
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   332
  Servlet 2.5 Specification
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   333
http://www.mularien.com/blog/2008/04/24/how-to-reference-and-use-jstl-in-your-web-application/
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   334
  How to Reference and Use JSTL in your Web Application
1563
9b4441d30cac Java interactive shell.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1380
diff changeset
   335
9b4441d30cac Java interactive shell.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1380
diff changeset
   336
Java interactive shell.
9b4441d30cac Java interactive shell.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1380
diff changeset
   337
=======================
9b4441d30cac Java interactive shell.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1380
diff changeset
   338
9b4441d30cac Java interactive shell.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1380
diff changeset
   339
Just use Groovy. ``bsh`` is older alternative without code completion.
2401
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   340
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   341
Object pretty-print
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   342
===================
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   343
::
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   344
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   345
  org.apache.commons.lang3.builder.ToStringBuilder.reflectionToString()
7f6cf1952337 Object pretty-print.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2357
diff changeset
   346
  org.apache.commons.lang3.builder.ReflectionToStringBuilder.toString()