java.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 22 Feb 2016 12:46:36 +0200
changeset 1905 fba288d59662
parent 1848 17256527f85e
child 1912 8b81a8f0f692
permissions -rw-r--r--
Include only local subsections into TOC. This prevent duplication of TOC when build single page HTML document. Also this make unnecessary CSS hack to hide document title as top level section.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     1
.. -*- coding: utf-8; -*-
1334
9bf0d5a1f0cf Include common header with quick links.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1270
diff changeset
     2
.. include:: HEADER.rst
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     3
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     4
================
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     5
 Java language.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     6
================
1346
a2fbf50a43f4 Fix: Has no 'contents::' directive.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1334
diff changeset
     7
.. contents::
1905
fba288d59662 Include only local subsections into TOC. This prevent duplication of
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1848
diff changeset
     8
   :local:
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     9
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    10
Class version.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    11
==============
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    12
1216
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    13
  =========  ====== =====================
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    14
  major      minor  Java platform version
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    15
  =========  ====== =====================
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    16
  45 0x27    3      1.0
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    17
  45 0x27    3      1.1
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    18
  46 0x28    0      1.2
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    19
  47 0x29    0      1.3
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    20
  48 0x30    0      1.4
1677
3d2d4e6062f3 New Java byte code versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1655
diff changeset
    21
  49 0x31    0      5.0
3d2d4e6062f3 New Java byte code versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1655
diff changeset
    22
  50 0x32    0      6.0
3d2d4e6062f3 New Java byte code versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1655
diff changeset
    23
  51 0x33    0      7
3d2d4e6062f3 New Java byte code versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1655
diff changeset
    24
  52 0x34    0      8
1216
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
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
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    37
 * Public class is visible in other packages.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    38
 * Public field is visible everywhere (class must be public too).
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
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    43
 * Private variables or methods may be used only by an instance of the same
1216
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    44
   class that declares the variable or method
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    45
 * A private feature may only be accessed by the class that owns the feature.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    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
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    50
 * Is available to all classes in the same package and also available to all
1216
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    51
   subclasses of the class that owns the protected feature.
1213
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    52
 * This access is provided even to subclasses that reside in a different
1216
7a3ade740d3f Fix RST syntax.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1215
diff changeset
    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
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    60
 * It means that it is visible to all within a particular package.
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
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    65
 * Static means one per class, not one for each object no matter how many
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    66
   instance of a class might exist. This means that you can use them without
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    67
   creating an instance of a class.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    68
 * Static methods are implicitly final, because overriding is done based on
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    69
   the type of the object, and static methods are attached to a class, not an
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    70
   object.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    71
 * A static method in a superclass can be shadowed by another static method in
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    72
   a subclass, as long as the original method was not declared final.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    73
 * You can't override a static method with a nonstatic method.
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
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    78
 * A final class can't be extended ie., final class may not be subclassed.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    79
 * A final method can't be overridden when its class is inherited.
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    80
 * You can't change value of a final variable.
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
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   138
  http://www.java.com/en/download/faq/java_win64bit.xml
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   139
                Which version of Java should I download for my 64-bit Windows
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   140
                operating system?
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   141
  http://java.sun.com/javase/6/webnotes/install/system-configurations.html
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   142
                Java SE 6 Release Notes Supported System Configurations
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
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   147
  http://java.sun.com/performance/reference/whitepapers/5.0_performance.html
06623bbdb097 Profiling java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   148
  http://java.sun.com/performance/reference/whitepapers/6_performance.html
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
1238
53da16ba1897 -Xrunjdwp:transport
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1216
diff changeset
   176
To attach to Java application you firstly must run application with (use
53da16ba1897 -Xrunjdwp:transport
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1216
diff changeset
   177
``dt_shmem`` for Windows and ``dt_socket`` for Linux)::
1215
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   178
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   179
  $ java -Xdebug -Xrunjdwp:transport=dt_shmem,server=y,suspend=n,address=$PORT \
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   180
    com.vendor.product.Clazz
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   181
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   182
and then attach with debugger::
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   183
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   184
  $ jdb -attach $PORT
84101bddf00c Debugging Java.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1214
diff changeset
   185
1848
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   186
Creating thread dump.
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   187
=====================
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   188
1629
32f8c509119d Dump current thread traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1563
diff changeset
   189
Dump current thread traces and memory statistic to stdout::
32f8c509119d Dump current thread traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1563
diff changeset
   190
32f8c509119d Dump current thread traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1563
diff changeset
   191
  $ kill -QUIT $PID
32f8c509119d Dump current thread traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1563
diff changeset
   192
1848
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   193
If application started with ``nohup`` redirect output to selected file::
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   194
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   195
  $ nohup java -cp ... com.app.Main  >$NOHUP.log &
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   196
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   197
or check default ``nohup.out`` or ``$HOME/nohup.out`` 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
Alternatively use ``jstack`` utility for Java version 1.5 and above::
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
  $ jstack -l $PID  >$DUMP.out
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
``jstack`` should be runned from same user as probing application::
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
  $ sudo -u $USER 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
.. 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
   208
          ``visualvm``.
17256527f85e Creating thread dump.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1847
diff changeset
   209
1845
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   210
Creating heap dump from Java application.
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   211
=========================================
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   212
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   213
Find pid of Java process::
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   214
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   215
  $ jps -l -v
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
Save dump to file::
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
  $ jmap -dump:format=b,file=heap.dump $PID
3004b10986a1 Creating heap dump from Java application.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1833
diff changeset
   220
1847
1333ab54cab1 ``live`` option.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1846
diff changeset
   221
With ``live`` option only reachable objects are dumped::
1333ab54cab1 ``live`` option.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1846
diff changeset
   222
1333ab54cab1 ``live`` option.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1846
diff changeset
   223
  $ jmap -dump:live,format=b,file=heap.dump $PID
1333ab54cab1 ``live`` option.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1846
diff changeset
   224
1846
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   225
Creating heap dump on OutOfMemory error.
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   226
========================================
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   227
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   228
Run Java application with::
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   229
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   230
  -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heap.dump
a2bec9594bb4 Creating heap dump on OutOfMemory error.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1845
diff changeset
   231
1643
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   232
Debug class loading.
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   233
====================
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   234
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   235
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
   236
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   237
  $ java -XX:+TraceClassLoading -XX:+TraceClassUnloading ...
1644
54d482709640 -verbose:class
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1643
diff changeset
   238
  $ java -verbose:class ...
1643
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   239
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   240
To review loaded classes explore heap dump in ``visualvm`` (visit "Classes"
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   241
tab).
fed98aef5cae Debug class loading.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1629
diff changeset
   242
1687
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   243
Decompile class file.
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   244
=====================
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   245
::
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   246
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   247
  $ javap -v -p -c My.java
da4a6ceb7e89 Decompile class file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1686
diff changeset
   248
1269
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   249
Find jar by class.
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   250
==================
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   251
1270
af6cbb1b5888 http://mvnrepository.com/search.html?query=PKG
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1269
diff changeset
   252
  http://mvnrepository.com/search.html?query=PKG
1269
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   253
  http://www.jarfinder.com
69d8c32d7bf9 Find jar by class.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1238
diff changeset
   254
1686
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   255
Set default Java in Debian.
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   256
===========================
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   257
::
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   258
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   259
  $ update-java-alternatives -l
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   260
  $ 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
   261
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   262
or individually for each executable::
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   263
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   264
  $ sudo update-alternatives --config java
4ea7c87dfb87 Set default Java in Debian.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1677
diff changeset
   265
1655
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   266
Import SSL certificate.
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   267
=======================
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   268
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   269
Get cert with::
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   270
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   271
  $ openssl s_client -connect promin-test.it.loc:433
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   272
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   273
  -----BEGIN CERTIFICATE-----
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   274
  ...
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   275
  -----END CERTIFICATE-----
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   276
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   277
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
   278
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   279
Call import utility with default ``changeit`` password::
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   280
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   281
  $ 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
   282
  $ 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
   283
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   284
Import certificate system wide in Debian by (note, ``.crt`` extention is
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   285
mandatory)::
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
  $ 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
   288
  $ sudo cp /tmp/$YOUR.crt /usr/share/ca-certificates/$ANY/
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   289
  $ 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
   290
  $ sudo update-ca-certificates --fresh --verbose
1cabdf6fe296 Import SSL certificate.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1644
diff changeset
   291
1379
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   292
Java EE versions.
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   293
=================
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   294
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   295
======= ======== ======== ========
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   296
Java EE Servlet  JSP      JSTL
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   297
======= ======== ======== ========
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   298
6       3.0      2.2      -
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   299
5       2.5      2.1      1.2
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   300
1.4     2.4      2.0      1.1
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   301
1.2     2.3      1.2      1.0
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   302
======= ======== ======== ========
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   303
1380
428a226bf835 Specify file name.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1379
diff changeset
   304
To set servlet version check ``WEB-INF/web.xml``::
1379
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   305
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   306
  <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
   307
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   308
See:
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   309
1833
378b566fd86b Java EE version history
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1687
diff changeset
   310
  http://en.wikipedia.org/wiki/Java_EE_version_history
378b566fd86b Java EE version history
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1687
diff changeset
   311
    Java EE version history.
1379
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   312
  http://jcp.org/aboutJava/communityprocess/final/jsr315/index.html
1833
378b566fd86b Java EE version history
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1687
diff changeset
   313
    Servlet 3.0 Specification
1379
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   314
  http://jcp.org/aboutJava/communityprocess/mrel/jsr154/index.html
1833
378b566fd86b Java EE version history
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1687
diff changeset
   315
    Servlet 2.5 Specification
1379
e1c949673102 Java EE versions.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1346
diff changeset
   316
  http://www.mularien.com/blog/2008/04/24/how-to-reference-and-use-jstl-in-your-web-application/
1833
378b566fd86b Java EE version history
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1687
diff changeset
   317
    How to Reference and Use JSTL in your Web Application
1563
9b4441d30cac Java interactive shell.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1380
diff changeset
   318
9b4441d30cac Java interactive shell.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1380
diff changeset
   319
Java interactive shell.
9b4441d30cac Java interactive shell.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1380
diff changeset
   320
=======================
9b4441d30cac Java interactive shell.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1380
diff changeset
   321
9b4441d30cac Java interactive shell.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1380
diff changeset
   322
Just use Groovy. ``bsh`` is older alternative without code completion.