doc-src/System/Thy/document/Scala.tex
author wenzelm
Fri, 24 Aug 2012 13:05:14 +0200
changeset 48919 aaca64a7390c
parent 48815 eed6698b2ba0
permissions -rw-r--r--
some markup for inlined files;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47825
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     1
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     2
\begin{isabellebody}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     3
\def\isabellecontext{Scala}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     4
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     5
\isadelimtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     6
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     7
\endisadelimtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     8
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
     9
\isatagtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    10
\isacommand{theory}\isamarkupfalse%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    11
\ Scala\isanewline
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    12
\isakeyword{imports}\ Base\isanewline
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    13
\isakeyword{begin}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    14
\endisatagtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    15
{\isafoldtheory}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    16
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    17
\isadelimtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    18
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    19
\endisadelimtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    20
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    21
\isamarkupchapter{Isabelle/Scala development tools%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    22
}
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    23
\isamarkuptrue%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    24
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    25
\begin{isamarkuptext}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    26
Isabelle/ML and Isabelle/Scala are the two main language
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    27
environments for Isabelle tool implementations.  There are some basic
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    28
command-line tools to work with the underlying Java Virtual Machine,
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    29
the Scala toplevel and compiler.  Note that Isabelle/jEdit
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    30
(\secref{sec:tool-tty}) provides a Scala Console for interactive
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    31
experimentation within the running application.%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    32
\end{isamarkuptext}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    33
\isamarkuptrue%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    34
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    35
\isamarkupsection{Java Runtime Environment within Isabelle \label{sec:tool-java}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    36
}
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    37
\isamarkuptrue%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    38
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    39
\begin{isamarkuptext}%
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 47825
diff changeset
    40
The \indexdef{}{tool}{java}\hypertarget{tool.java}{\hyperlink{tool.java}{\mbox{\isa{\isatool{java}}}}} tool is a direct wrapper for the Java
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 47825
diff changeset
    41
  Runtime Environment, within the regular Isabelle settings
47825
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    42
  environment (\secref{sec:settings}).  The command line arguments are
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    43
  that of the underlying Java version.  It is run in \verb|-server| mode if possible, to improve performance (at the cost of
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    44
  extra startup time).
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    45
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    46
  The \verb|java| executable is the one within \hyperlink{setting.ISABELLE-JDK-HOME}{\mbox{\isa{\isatt{ISABELLE{\isaliteral{5F}{\isacharunderscore}}JDK{\isaliteral{5F}{\isacharunderscore}}HOME}}}}, according to the standard directory layout for
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    47
  official JDK distributions.  The class loader is augmented such that
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    48
  the name space of \verb|Isabelle/Pure.jar| is available,
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    49
  which is the main Isabelle/Scala module.
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    50
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    51
  For example, the following command-line invokes the main method of
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    52
  class \verb|isabelle.GUI_Setup|, which opens a windows with
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    53
  some diagnostic information about the Isabelle environment:
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    54
\begin{alltt}
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    55
  isabelle java isabelle.GUI_Setup
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    56
\end{alltt}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    57
\end{isamarkuptext}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    58
\isamarkuptrue%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    59
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    60
\isamarkupsection{Scala toplevel \label{sec:tool-scala}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    61
}
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    62
\isamarkuptrue%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    63
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    64
\begin{isamarkuptext}%
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 47825
diff changeset
    65
The \indexdef{}{tool}{scala}\hypertarget{tool.scala}{\hyperlink{tool.scala}{\mbox{\isa{\isatool{scala}}}}} tool is a direct wrapper for the Scala
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 47825
diff changeset
    66
  toplevel; see also \hyperlink{tool.java}{\mbox{\isa{\isatool{java}}}} above.  The command line arguments
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 47825
diff changeset
    67
  are that of the underlying Scala version.
47825
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    68
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    69
  This allows to interact with Isabelle/Scala in TTY mode like this:
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    70
\begin{alltt}
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    71
  isabelle scala
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    72
  scala> isabelle.Isabelle_System.getenv("ISABELLE_HOME")
48815
wenzelm
parents: 48602
diff changeset
    73
  scala> val options = isabelle.Options.init()
wenzelm
parents: 48602
diff changeset
    74
  scala> options.bool("browser_info")
47825
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    75
\end{alltt}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    76
\end{isamarkuptext}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    77
\isamarkuptrue%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    78
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    79
\isamarkupsection{Scala compiler \label{sec:tool-scalac}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    80
}
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    81
\isamarkuptrue%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    82
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    83
\begin{isamarkuptext}%
48602
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 47825
diff changeset
    84
The \indexdef{}{tool}{scalac}\hypertarget{tool.scalac}{\hyperlink{tool.scalac}{\mbox{\isa{\isatool{scalac}}}}} tool is a direct wrapper for the Scala
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 47825
diff changeset
    85
  compiler; see also \hyperlink{tool.scala}{\mbox{\isa{\isatool{scala}}}} above.  The command line arguments
342ca8f3197b more uniform usage of "isabelle tool";
wenzelm
parents: 47825
diff changeset
    86
  are that of the underlying Scala version.
47825
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    87
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    88
  This allows to compile further Scala modules, depending on existing
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    89
  Isabelle/Scala functionality.  The resulting class or jar files can
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    90
  be added to the \hyperlink{setting.CLASSPATH}{\mbox{\isa{\isatt{CLASSPATH}}}} via the \verb|classpath|
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    91
  Bash function that is provided by the Isabelle process environment.
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    92
  Thus add-on components can register themselves in a modular manner,
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    93
  see also \secref{sec:components}.
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    94
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    95
  Note that jEdit (\secref{sec:tool-jedit}) has its own mechanisms for
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    96
  adding plugin components, which needs special attention since
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    97
  it overrides the standard Java class loader.%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    98
\end{isamarkuptext}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
    99
\isamarkuptrue%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   100
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   101
\isadelimtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   102
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   103
\endisadelimtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   104
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   105
\isatagtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   106
\isacommand{end}\isamarkupfalse%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   107
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   108
\endisatagtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   109
{\isafoldtheory}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   110
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   111
\isadelimtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   112
%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   113
\endisadelimtheory
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   114
\isanewline
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   115
\end{isabellebody}%
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   116
%%% Local Variables:
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   117
%%% mode: latex
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   118
%%% TeX-master: "root"
4f25960417ae some coverage of Isabelle/Scala tools;
wenzelm
parents:
diff changeset
   119
%%% End: