java.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 16 Sep 2019 22:13:19 +0300
changeset 2376 20b65f046002
parent 2357 107d39975281
child 2401 7f6cf1952337
permissions -rw-r--r--
Revoke privileges and drop role.
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
=========  ====== =====================
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    14
major      minor  Java platform version
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    15
=========  ====== =====================
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    16
45 0x27    3      1.0
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    17
45 0x27    3      1.1
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    18
46 0x28    0      1.2
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    19
47 0x29    0      1.3
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    20
48 0x30    0      1.4
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    21
49 0x31    0      5.0
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    22
50 0x32    0      6.0
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    23
51 0x33    0      7
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    24
52 0x34    0      8
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    25
=========  ====== =====================
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    26
1216
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    27
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
    28
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    29
  0xCA, 0xFE, 0xBA, 0xBE, 0x00, minor, 0x00, major
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    30
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    31
Access modifiers.
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.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    35
-------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    36
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    37
* Public class is visible in other packages.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    38
* Public field is visible everywhere (class must be public too).
1213
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.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    41
--------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    42
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    43
* 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
    44
  class that declares the variable or method
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    45
* 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
    46
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    47
Protected.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    48
----------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    49
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    50
* 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
    51
  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
    52
* 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
    53
  package from the class that owns the protected feature.
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    54
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    55
default.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    56
--------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    57
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    58
What you get by default ie, without any access modifier.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    59
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    60
* It means that it is visible to all within a particular package.
1213
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.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    63
-------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    64
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    65
* 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
    66
  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
    67
  creating an instance of a class.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    68
* 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
    69
  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
    70
  object.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    71
* 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
    72
  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
    73
* You can't override a static method with a nonstatic method.
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    74
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    75
final.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    76
------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    77
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
    78
* 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
    79
* 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
    80
* You can't change value of a final variable.
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    81
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    82
Exceptions.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    83
===========
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    84
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    85
A checked exception is some subclass of Exception (or Exception itself),
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    86
excluding class RuntimeException and its subclasses.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    87
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    88
Unchecked exceptions are RuntimeException and any of its subclasses. Class
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    89
Error and its subclasses also are unchecked. With an unchecked exception,
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    90
however, the compiler doesn't force client programmers either to catch the
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    91
exception or declare it in a throws clause.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    92
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    93
Inner 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
Nested top-level classes.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    97
-------------------------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    98
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    99
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
   100
compiler treats the class just like any other top-level class.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   101
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   102
Any class outside the declaring class accesses the nested class with the
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   103
declaring class name acting similarly to a package. eg, outer.inner. Top-level
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   104
inner classes implicitly have access only to static variables. There can also
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   105
be inner interfaces. All of these are of the nested top-level variety.
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 classes.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   108
---------------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   109
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   110
Member inner classes are just like other member methods and member variables
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   111
and access to the member class is restricted, just like methods and variables.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   112
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
   113
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   114
The primary difference between member classes and nested top-level classes is
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   115
that member classes have access to the specific instance of the enclosing
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   116
class.
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.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   119
--------------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   120
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   121
Local classes are like local variables, specific to a block of code. Their
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   122
visibility is only within the block of their declaration. In order for the
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   123
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
   124
more publicly available interface.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   125
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   126
Because local classes are not members, the modifiers public, protected,
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   127
private, and static are not usable.
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 classes.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   130
------------------
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   131
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   132
Anonymous inner classes extend local inner classes one level further. As
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   133
anonymous classes have no name, you cannot provide a constructor.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   134
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   135
64-bit problem.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   136
===============
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   137
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   138
http://www.java.com/en/download/faq/java_win64bit.xml
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   139
  Which version of Java should I download for my 64-bit Windows
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   140
  operating system?
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   141
http://java.sun.com/javase/6/webnotes/install/system-configurations.html
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   142
  Java SE 6 Release Notes Supported System Configurations
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   143
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   144
Java performance.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   145
=================
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   146
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   147
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
   148
http://java.sun.com/performance/reference/whitepapers/6_performance.html
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   149
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   150
Creating jar.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   151
=============
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   152
::
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   153
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   154
  $ jar cf myFile.jar *.class
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   155
  $ jar cmf myManifestFile myFile.jar *.class
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   156
  $ jar -cfe Main.jar foo.Main foo/Main.class
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   157
1215
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   158
Profiling Java.
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   159
===============
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   160
::
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   161
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   162
  $ java -Xprof com.vendor.product.Clazz
1214
fe28cec0bb40 java -Xrunhprof:help
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1213
diff changeset
   163
  $ java -Xrunhprof:help
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   164
1215
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   165
Debugging Java.
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
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   168
Compile with ``-g`` to preserve source code information::
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   169
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   170
  $ javac -g -cp $CLASSPATH -sourcepath $SRC_DIR -d $BUILD_DIR
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   171
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   172
To run Java program in debugger::
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
  $ jdb -cp $CLASSPATH -sourcepath $SRC_DIR
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   175
2357
107d39975281 For ``transport`` use.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2350
diff changeset
   176
To attach to Java application you should run application as::
1215
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   177
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   178
  $ java -Xdebug -Xrunjdwp:transport=dt_shmem,server=y,suspend=n,address=$PORT \
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   179
    com.vendor.product.Clazz
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
and then attach with debugger::
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   182
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   183
  $ jdb -attach $PORT
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   184
2357
107d39975281 For ``transport`` use.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2350
diff changeset
   185
For ``transport`` use:
107d39975281 For ``transport`` use.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2350
diff changeset
   186
107d39975281 For ``transport`` use.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2350
diff changeset
   187
* ``dt_shmem`` for Windows
107d39975281 For ``transport`` use.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2350
diff changeset
   188
* ``dt_socket`` for Linux
107d39975281 For ``transport`` use.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2350
diff changeset
   189
1848
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   190
Creating thread dump.
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   191
=====================
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   192
1629
32f8c509119d Dump current thread traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1563
diff changeset
   193
Dump current thread traces and memory statistic to stdout::
32f8c509119d Dump current thread traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1563
diff changeset
   194
32f8c509119d Dump current thread traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1563
diff changeset
   195
  $ kill -QUIT $PID
32f8c509119d Dump current thread traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1563
diff changeset
   196
1848
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   197
If application started with ``nohup`` redirect output to selected file::
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   198
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   199
  $ nohup java -cp ... com.app.Main  >$NOHUP.log &
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
or check default ``nohup.out`` or ``$HOME/nohup.out`` file.
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
Alternatively use ``jstack`` utility for Java version 1.5 and above::
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
  $ jstack -l $PID  >$DUMP.out
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`` should be runned from same user as probing application::
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
  $ sudo -u $USER jstack -l $PID  >$DUMP.out
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
.. 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
   212
          ``visualvm``.
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   213
1845
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   214
Creating heap dump from Java application.
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   215
=========================================
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   216
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   217
Find pid of Java process::
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
  $ jps -l -v
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
Save dump to file::
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
  $ jmap -dump:format=b,file=heap.dump $PID
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   224
1847
1333ab54cab1 ``live`` option.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1846
diff changeset
   225
With ``live`` option only reachable objects are dumped::
1333ab54cab1 ``live`` option.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1846
diff changeset
   226
1333ab54cab1 ``live`` option.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1846
diff changeset
   227
  $ jmap -dump:live,format=b,file=heap.dump $PID
1333ab54cab1 ``live`` option.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1846
diff changeset
   228
2350
1141a548cbb6 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
   229
Creating heap dump on OutOfMemory error
1141a548cbb6 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
   230
=======================================
1846
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   231
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   232
Run Java application with::
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   233
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   234
  -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heap.dump
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   235
2350
1141a548cbb6 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
   236
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
   237
  B.1.2 -XX:+HeapDumpOnOutOfMemoryError Option.
1141a548cbb6 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2228
diff changeset
   238
1643
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   239
Debug class loading.
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   240
====================
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   241
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   242
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
   243
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   244
  $ java -XX:+TraceClassLoading -XX:+TraceClassUnloading ...
1644
54d482709640 -verbose:class
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1643
diff changeset
   245
  $ java -verbose:class ...
1643
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
To review loaded classes explore heap dump in ``visualvm`` (visit "Classes"
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   248
tab).
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   249
1687
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   250
Decompile class file.
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   251
=====================
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   252
::
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   253
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   254
  $ javap -v -p -c My.java
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   255
2127
782577d2e7f0 http://jd.benow.ca/
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
   256
Graphical tools are available at:
782577d2e7f0 http://jd.benow.ca/
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
   257
782577d2e7f0 http://jd.benow.ca/
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
   258
http://jd.benow.ca/
782577d2e7f0 http://jd.benow.ca/
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
   259
  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
   260
  “.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
   261
  for instant access to methods and fields.
782577d2e7f0 http://jd.benow.ca/
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1912
diff changeset
   262
1269
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   263
Find jar by class.
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   264
==================
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   265
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   266
* http://mvnrepository.com/search.html?query=PKG
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   267
* http://www.jarfinder.com
1269
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   268
1686
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   269
Set default Java in Debian.
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   270
===========================
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   271
::
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   272
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   273
  $ update-java-alternatives -l
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   274
  $ 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
   275
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   276
or individually for each executable::
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   277
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   278
  $ sudo update-alternatives --config java
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   279
1655
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   280
Import SSL certificate.
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   281
=======================
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   282
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   283
Get cert with::
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
  $ openssl s_client -connect promin-test.it.loc:433
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   286
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   287
  -----BEGIN CERTIFICATE-----
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   288
  ...
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   289
  -----END CERTIFICATE-----
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   290
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   291
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
   292
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   293
Call import utility with default ``changeit`` password::
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   294
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   295
  $ 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
   296
  $ 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
   297
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   298
Import certificate system wide in Debian by (note, ``.crt`` extention is
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   299
mandatory)::
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
  $ 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
   302
  $ sudo cp /tmp/$YOUR.crt /usr/share/ca-certificates/$ANY/
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   303
  $ 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
   304
  $ sudo update-ca-certificates --fresh --verbose
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   305
1379
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   306
Java EE versions.
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   307
=================
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   308
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   309
======= ======== ======== ========
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   310
Java EE Servlet  JSP      JSTL
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
6       3.0      2.2      -
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   313
5       2.5      2.1      1.2
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   314
1.4     2.4      2.0      1.1
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   315
1.2     2.3      1.2      1.0
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   316
======= ======== ======== ========
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   317
1380
428a226bf835 Specify file name.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1379
diff changeset
   318
To set servlet version check ``WEB-INF/web.xml``::
1379
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
  <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
   321
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   322
See:
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   323
2228
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   324
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
   325
  Java EE version history.
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   326
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
   327
  Servlet 3.0 Specification
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   328
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
   329
  Servlet 2.5 Specification
837f1337c59b Removed indentation that compiled into <blockquote>.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 2127
diff changeset
   330
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
   331
  How to Reference and Use JSTL in your Web Application
1563
9b4441d30cac Java interactive shell.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1380
diff changeset
   332
9b4441d30cac Java interactive shell.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1380
diff changeset
   333
Java interactive shell.
9b4441d30cac Java interactive shell.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1380
diff changeset
   334
=======================
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
Just use Groovy. ``bsh`` is older alternative without code completion.