add studienarbeit latex code
This commit is contained in:
parent
f81307ed68
commit
4fa62b8a74
108
Studienarbeit/#main.tex#
Normal file
108
Studienarbeit/#main.tex#
Normal file
@ -0,0 +1,108 @@
|
||||
%!TEX root = ./main.tex
|
||||
|
||||
%%**************************************************************
|
||||
%%
|
||||
%% DHBW Heidenheim - Template for Bachelor Thesis
|
||||
%%
|
||||
%% Bevor usisng this template please have a look at the REAMDME.md file
|
||||
%%
|
||||
%%**************************************************************
|
||||
|
||||
\input{ads/header}
|
||||
|
||||
\input{content/glossary}
|
||||
|
||||
\begin{document}
|
||||
|
||||
% Cover
|
||||
\begin{spacing}{1}
|
||||
\input{ads/cover}
|
||||
\end{spacing}
|
||||
\newpage
|
||||
|
||||
\pagenumbering{Roman}
|
||||
|
||||
% Restriction notices
|
||||
\ifDocType{T2\_3100}{%
|
||||
% no restricition notices for semester paper
|
||||
}{%
|
||||
\input{ads/restrictionNotices}
|
||||
\newpage
|
||||
}%
|
||||
|
||||
% Declaration
|
||||
\input{ads/declaration}
|
||||
\newpage
|
||||
|
||||
% Abstract
|
||||
\input{content/abstract}
|
||||
\newpage
|
||||
|
||||
% only page number in footer
|
||||
\pagestyle{plain}
|
||||
|
||||
% space bevore chapter headline
|
||||
\RedeclareSectionCommand[beforeskip=\chapterMargin]{chapter}
|
||||
|
||||
% Contents
|
||||
\begin{spacing}{1.1}
|
||||
\begingroup
|
||||
|
||||
% set subchapter depth
|
||||
\setcounter{tocdepth}{2}
|
||||
|
||||
\tableofcontents
|
||||
\clearpage
|
||||
\endgroup
|
||||
\end{spacing}
|
||||
\newpage
|
||||
|
||||
% Acronyms
|
||||
\cleardoublepage
|
||||
\input{content/acronyms}
|
||||
|
||||
% List of Figures
|
||||
\cleardoublepage
|
||||
\listoffigures
|
||||
|
||||
%List of Tables
|
||||
\cleardoublepage
|
||||
\listoftables
|
||||
|
||||
% List of Listings
|
||||
\cleardoublepage
|
||||
\lstlistoflistings
|
||||
\cleardoublepage
|
||||
|
||||
\pagenumbering{arabic}
|
||||
|
||||
\pagestyle{headings}
|
||||
|
||||
%Content
|
||||
\foreach \i in {01,02,03,04,05,06,07,08,09,...,99} {%
|
||||
\edef\FileName{content/chapter/\i .tex}%
|
||||
\IfFileExists{\FileName}{%
|
||||
\input{\FileName}
|
||||
}
|
||||
{%
|
||||
% No chapter available
|
||||
}
|
||||
}
|
||||
|
||||
\clearpage
|
||||
|
||||
% Bibilography
|
||||
\cleardoublepage
|
||||
\printbibliography
|
||||
|
||||
% Glossar
|
||||
\cleardoublepage
|
||||
\printglossary[style=altlist,title=\glossaryPhrase]
|
||||
\input{content/glossary}
|
||||
|
||||
% Appendix
|
||||
\clearpage
|
||||
\appendix
|
||||
\input{content/appendix}
|
||||
|
||||
\end{document}
|
1
Studienarbeit/.#main.tex
Symbolic link
1
Studienarbeit/.#main.tex
Symbolic link
@ -0,0 +1 @@
|
||||
julianschmidt@MacBook-Air-von-Julian.local.5733
|
BIN
Studienarbeit/.DS_Store
vendored
Normal file
BIN
Studienarbeit/.DS_Store
vendored
Normal file
Binary file not shown.
5
Studienarbeit/.latexmkrc
Normal file
5
Studienarbeit/.latexmkrc
Normal file
@ -0,0 +1,5 @@
|
||||
|
||||
$pdf_mode = 1;
|
||||
$bibtex_use = 2;
|
||||
$biber = 'biber %O %S';
|
||||
$pdflatex = 'pdflatex -interaction=errorstopmode -file-line-error %O %S';
|
21
Studienarbeit/LICENSE
Normal file
21
Studienarbeit/LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2017 Prof. Dr. Rolf Assfalg, Stefan Schneider, Andreas Kießling
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
57
Studienarbeit/ads/cover.tex
Normal file
57
Studienarbeit/ads/cover.tex
Normal file
@ -0,0 +1,57 @@
|
||||
%!TEX root = ../main.tex
|
||||
|
||||
\begin{titlepage}
|
||||
\begin{longtable}{p{8cm} p{8cm}}
|
||||
\raggedright {\raisebox{\ht\strutbox-\totalheight}{\includegraphics[height=2.5cm]{images/cover/logo-dhbw.pdf}}} &
|
||||
% no company logo for semester paper and special documents
|
||||
\ifDocType{T2\_3100}{}{%
|
||||
\ifSpecialDocument{}{%
|
||||
\raggedleft {\raisebox{\ht\strutbox-\totalheight}{\includegraphics[height=2.5cm]{images/cover/logo-company.png}}}
|
||||
}%
|
||||
}%
|
||||
\end{longtable}
|
||||
\enlargethispage{20mm}
|
||||
\begin{center}
|
||||
\doublespacing{
|
||||
\vspace*{12mm} {\LARGE\textbf \documentTitle }}\\
|
||||
\vspace*{12mm} {\large\textbf {\documentTypePhrase}}\\
|
||||
|
||||
% degre only for bachelor thesis
|
||||
\ifDocType{T2\_3300}{
|
||||
\vspace*{12mm} \degreePhrase\\
|
||||
\vspace*{3mm} {\textbf \degree}\\
|
||||
}
|
||||
|
||||
\IfStrEq{\showLecture}{true}{
|
||||
\vspace*{12mm} \lecturePhrase\\
|
||||
\vspace*{0mm} {\textbf \lecture}\\
|
||||
}
|
||||
|
||||
\vspace*{12mm} \departmentPhrase{} \department\\
|
||||
\vspace*{0mm} \locationUniversityPhrase{} \locationUniversity\\
|
||||
\vspace*{12mm} \documentAuthorPhrase\\
|
||||
\vspace*{3mm} {\large\textbf \documentAuthor}\\
|
||||
\vspace*{12mm} \releaseDate\\
|
||||
\end{center}
|
||||
\vfill
|
||||
\begin{spacing}{1.2}
|
||||
\begin{tabbing}
|
||||
mmmmmmmmmmmmmmmmmmmmmmmmmm \= \kill
|
||||
%\textbf{\documentPeriodPhrase} \> \documentPeriod\\
|
||||
\textbf{\matriculationNumberPhrase, \coursePhrase} \> \matriculationNumber, \course\\
|
||||
|
||||
% no company for the semester paper and special documents
|
||||
\ifDocType{T2\_3100}{}{%
|
||||
\ifSpecialDocument{}{%
|
||||
\textbf{\companyPhrase} \> \companyName, \companyLocation\\
|
||||
}%
|
||||
}%
|
||||
\textbf{Betreuer}/\textbf{\tutorPhrase} \> \tutor\\
|
||||
|
||||
% evaluator only for bachelor thesis
|
||||
\ifDocType{T2\_3300}{%
|
||||
\textbf{\evaluatorPhrase} \> \evaluator
|
||||
}{}
|
||||
\end{tabbing}
|
||||
\end{spacing}
|
||||
\end{titlepage}
|
37
Studienarbeit/ads/declaration.tex
Normal file
37
Studienarbeit/ads/declaration.tex
Normal file
@ -0,0 +1,37 @@
|
||||
%!TEX root = ../main.tex
|
||||
|
||||
\thispagestyle{empty}
|
||||
|
||||
\section*{\declarationPhrase}
|
||||
|
||||
\vspace*{2em}
|
||||
|
||||
\iflang{de}{%
|
||||
\ifMultipleAuthors{Wir versichern}{Ich versichere} hiermit, dass \ifMultipleAuthors{wir unsere}{ich meine}
|
||||
{\documentTypePhrase} mit dem Thema: {\itshape \documentTitle }
|
||||
selbstständig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt \ifMultipleAuthors{haben}{habe}.
|
||||
}
|
||||
|
||||
|
||||
\iflang{en}{%
|
||||
Hereby \ifMultipleAuthors{we}{I} solemnly declare:
|
||||
\begin{enumerate}
|
||||
\item that this {\documentTypePhrase}, titled {\itshape \documentTitle } is entirely the product of \ifMultipleAuthors{our}{my}
|
||||
own scholarly work, unless otherwise indicated in the text or references, or acknowledged below;
|
||||
\item \ifMultipleAuthors{we}{I} have indicated the thoughts adopted directly or indirectly from other sources at the appropriate
|
||||
places within the document;
|
||||
\item this {\documentTypePhrase} has not been submitted either in whole or part, for a degree at this or
|
||||
any other university or institution;
|
||||
\item \ifMultipleAuthors{we}{I} have not published this {\documentTypePhrase} in the past;
|
||||
\item the printed version is equivalent to the submitted electronic one.
|
||||
\end{enumerate}
|
||||
\ifMultipleAuthors{We are}{I am} aware that a dishonest declaration will entail legal consequences.
|
||||
}
|
||||
|
||||
\vspace{3em}
|
||||
|
||||
\releaseLocation, 02. Juni 2024
|
||||
\vspace{4em}
|
||||
|
||||
\rule{6cm}{0.4pt}\\
|
||||
\documentAuthor
|
190
Studienarbeit/ads/header.tex
Normal file
190
Studienarbeit/ads/header.tex
Normal file
@ -0,0 +1,190 @@
|
||||
%!TEX root = ../main.tex
|
||||
|
||||
% show warning for old LaTeX syntax
|
||||
\RequirePackage[l2tabu, orthodox]{nag}
|
||||
|
||||
\documentclass[
|
||||
pdftex,
|
||||
oneside,
|
||||
12pt, % fontsize
|
||||
parskip=half, % Space (in lines) between paragraphs
|
||||
headheight = 12pt, % Header hight
|
||||
headsepline, % Line after header
|
||||
footheight = 16pt, % Footer height
|
||||
footsepline, % Line before footer
|
||||
abstract=true, % Abstract headline
|
||||
DIV=calc, % Calculate print space
|
||||
BCOR=8mm, % BCOR settings (Bindekorrektur)
|
||||
headinclude=false, % Exclude header from print space
|
||||
footinclude=false, % Exclude footer from print space
|
||||
listof=totoc, % Show List of Figures/Tables in Contents
|
||||
toc=bibliography, % Show Bibliography in Contents
|
||||
]{scrreprt} % Koma-Script report-class, long document: scrreprt, short document: scrbook
|
||||
|
||||
\usepackage{xstring}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[T1]{fontenc}
|
||||
|
||||
% iflang command definition
|
||||
\newcommand{\iflang}[2]{%
|
||||
\IfStrEq{\documentLanguage}{#1}{#2}{}%
|
||||
}
|
||||
|
||||
% ifDocType comand definition
|
||||
\newcommand{\ifDocType}[3]{%
|
||||
\IfStrEq{\documentType}{#1}{#2}{#3}%
|
||||
}
|
||||
|
||||
% ifMultipleAuthors definition
|
||||
\newcommand{\ifMultipleAuthors}[2]{%
|
||||
\IfStrEq{\multipleAuthors}{true}{#1}{#2}%
|
||||
}
|
||||
|
||||
% ifSpecialDocument definition
|
||||
\newcommand{\ifSpecialDocument}[2]{\IfStrEqCase{\documentType}{%
|
||||
{T2_1000}{#2\ignorespaces}%
|
||||
{T2\_2000}{#2\ignorespaces}%
|
||||
{T2\_3100}{#2\ignorespaces}%
|
||||
{T2\_3300}{#2\ignorespaces}%
|
||||
}[#1\ignorespaces]%
|
||||
}
|
||||
|
||||
% Include main settings
|
||||
\input{settings/main}
|
||||
|
||||
% Include document settings
|
||||
\input{settings/document}
|
||||
|
||||
% Load language specific Strings
|
||||
\input{lang/\documentLanguage}
|
||||
|
||||
% Load language specific babel package
|
||||
\iflang{de}{\usepackage[english, ngerman]{babel}}
|
||||
\iflang{en}{\usepackage[ngerman, english]{babel}}
|
||||
|
||||
% Add comment feature
|
||||
\newcommand{\comment}[1]{\par {\bfseries \color{blue} #1 \par}}
|
||||
|
||||
|
||||
%%%%%%% Package Includes %%%%%%%
|
||||
|
||||
\usepackage[margin=\margin,foot=1cm]{geometry}
|
||||
\usepackage[activate]{microtype}
|
||||
\usepackage[onehalfspacing]{setspace}
|
||||
\usepackage{makeidx}
|
||||
\usepackage[autostyle=true,german=quotes]{csquotes}
|
||||
\usepackage{longtable}
|
||||
\usepackage{enumitem}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{pdfpages}
|
||||
\usepackage{xcolor}
|
||||
\usepackage{float}
|
||||
\usepackage{array}
|
||||
\usepackage{calc}
|
||||
\usepackage[right]{eurosym}
|
||||
\usepackage{wrapfig}
|
||||
\usepackage{pgffor}
|
||||
\usepackage[perpage, hang, multiple, stable]{footmisc}
|
||||
\usepackage[printonlyused]{acronym}
|
||||
\usepackage{listings}
|
||||
\usepackage[obeyFinal,backgroundcolor=yellow,linecolor=black]{todonotes}
|
||||
\usepackage{rotating}
|
||||
\usepackage{lscape}
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{\documentFont}
|
||||
\usepackage[%
|
||||
pdftitle={\documentTitle},
|
||||
pdfauthor={\documentAuthor},
|
||||
pdfsubject={\documentType},
|
||||
pdfcreator={pdflatex, LaTeX with KOMA-Script},
|
||||
pdfpagemode=UseOutlines, % Show Contents while opening
|
||||
pdfdisplaydoctitle=true, % Show document title instead of file name
|
||||
pdflang={\documentLanguage}, % Document language
|
||||
]{hyperref}
|
||||
\usepackage{bookmark}
|
||||
\usepackage[nonumberlist,toc]{glossaries}
|
||||
\usepackage{fontawesome5}
|
||||
\usepackage{forest}
|
||||
\usepackage{pgf-pie}
|
||||
\usepackage{float}
|
||||
|
||||
% Generate glossary
|
||||
\makeglossaries{}
|
||||
|
||||
% Load colors
|
||||
\defineColors{}
|
||||
|
||||
% Set Titel, Autor and Date
|
||||
\title{\documentTitle}
|
||||
\author{\documentAuthor}
|
||||
\date{\datum}
|
||||
|
||||
|
||||
% PDF link settings
|
||||
\hypersetup{%
|
||||
colorlinks=true,
|
||||
linkcolor=LinkColor,
|
||||
citecolor=LinkColor,
|
||||
filecolor=LinkColor,
|
||||
menucolor=LinkColor,
|
||||
urlcolor=LinkColor,
|
||||
linktocpage=true,
|
||||
bookmarksnumbered=true
|
||||
}
|
||||
|
||||
% Captions fontsize
|
||||
\addtokomafont{caption}{\small}
|
||||
|
||||
% Bibliographie settings
|
||||
\iflang{de}{%
|
||||
\usepackage[
|
||||
backend=biber, % recommended. Alternative: bibtex
|
||||
bibwarn=true,
|
||||
bibencoding=utf8, % If .bib file is encoded with utf8, otherwise ascii
|
||||
sortlocale=de_DE,
|
||||
style=numeric
|
||||
%style=\quoteStyle,
|
||||
]{biblatex}
|
||||
}
|
||||
\iflang{en}{%
|
||||
\usepackage[
|
||||
backend=biber, % recommended. Alternative: bibtex
|
||||
bibwarn=true,
|
||||
bibencoding=utf8, % If .bib file is encoded with utf8, otherwise ascii
|
||||
sortlocale=en_US,
|
||||
style=\quoteStyle,
|
||||
]{biblatex}
|
||||
}
|
||||
|
||||
\usepackage{amsthm}
|
||||
\usepackage{tikz}
|
||||
\usetikzlibrary{shapes,arrows,positioning,calc, positioning, fit, backgrounds,arrows.meta}
|
||||
\usepackage{pgfplots} % Add this line to import the necessary package
|
||||
|
||||
\theoremstyle{definition}
|
||||
\newtheorem{definition}{Definition}[section]
|
||||
|
||||
\addbibresource{bibliographie.bib}
|
||||
|
||||
% Hurenkinder und Schusterjungen verhindern
|
||||
% http://projekte.dante.de/DanteFAQ/Silbentrennung
|
||||
\clubpenalty = 10000 % schließt Schusterjungen aus (Seitenumbruch nach der ersten Zeile eines neuen Absatzes)
|
||||
\widowpenalty = 10000 % schließt Hurenkinder aus (die letzte Zeile eines Absatzes steht auf einer neuen Seite)
|
||||
\displaywidowpenalty=10000
|
||||
|
||||
% Graphicspath
|
||||
\graphicspath{{images/}}
|
||||
|
||||
% frequently used programing languages
|
||||
\lstloadlanguages{PHP,Python,Java,C,C++,bash}
|
||||
|
||||
\listingsettings{}
|
||||
% Rename Listings
|
||||
\renewcommand\lstlistingname{\listingPhrase}
|
||||
\renewcommand\lstlistlistingname{\listListingPhrase}
|
||||
\def\lstlistingautorefname{\authorListingPhrase}
|
||||
|
||||
% Spaces in tables
|
||||
\setlength{\tabcolsep}{\tableColumnMargin}
|
||||
\renewcommand{\arraystretch}{\tableRowMargin}
|
51
Studienarbeit/ads/restrictionNotices.tex
Normal file
51
Studienarbeit/ads/restrictionNotices.tex
Normal file
@ -0,0 +1,51 @@
|
||||
%!TEX root = ../main.tex
|
||||
|
||||
\thispagestyle{empty}
|
||||
|
||||
\section*{\restrictionNoticesPhrase}
|
||||
|
||||
\vspace*{2em}
|
||||
|
||||
\iflang{de}{%
|
||||
Die vorliegende {\documentTypePhrase} mit dem Titel {\itshape{} \documentTitle{}\/} enthält
|
||||
unternehmensinterne bzw. vertrauliche Informationen der {\companyName}, ist deshalb mit einem
|
||||
Sperrvermerk versehen und wird ausschließlich zu Prüfungszwecken am Studiengang {\department}
|
||||
der Dualen Hochschule Baden-Württemberg {\locationUniversity} vorgelegt. Sie ist ausschließlich zur
|
||||
Einsicht durch den zugeteilten Gutachter, die Leitung des Studiengangs und ggf. den Prüfungsausschuss
|
||||
des Studiengangs bestimmt. Es ist untersagt,
|
||||
\begin{itemize}
|
||||
\item den Inhalt dieser Arbeit (einschließlich Daten, Abbildungen, Tabellen, Zeichnungen usw.) als
|
||||
Ganzes oder auszugsweise weiterzugeben,
|
||||
\item Kopien oder Abschriften dieser Arbeit (einschließlich Daten, Abbildungen, Tabellen,
|
||||
Zeichnungen usw.) als Ganzes oder in Auszügen anzufertigen,
|
||||
\item diese Arbeit zu veröffentlichen bzw. digital, elektronisch oder virtuell zur Verfügung zu stellen.
|
||||
\end{itemize}
|
||||
Jede anderweitige Einsichtnahme und Veröffentlichung – auch von Teilen der Arbeit – bedarf der
|
||||
vorherigen Zustimmung durch den Verfasser und {\companyName}.
|
||||
}
|
||||
|
||||
%http://www.ib.dhbw-mannheim.de/fileadmin/ms/bwl-ib/Downloads_alt/Leitfaden_31.05.pdf
|
||||
|
||||
\iflang{en}{%
|
||||
The {\documentTypePhrase} on hand
|
||||
\begin{center}{\itshape{} \documentTitle{}\/}\end{center}
|
||||
contains internal resp.\ confidential data of {\companyName}. It is intended solely for inspection by the
|
||||
assigned examiner, the head of the {\department} department and, if necessary, the Audit
|
||||
Committee \locationUniversityPhrase{} {\locationUniversity}. It is strictly forbidden
|
||||
\begin{itemize}
|
||||
\item to distribute the content of this paper (including data, figures, tables, charts etc.) as a whole or
|
||||
in extracts,
|
||||
\item to make copies or transcripts of this paper or of parts of it,
|
||||
\item to display this paper or make it available in digital, electronic or virtual form.
|
||||
\end{itemize}
|
||||
Exceptional cases may be considered through permission granted in written form by the author
|
||||
and {\companyName}.
|
||||
}
|
||||
|
||||
\vspace{3em}
|
||||
|
||||
\releaseLocation, \releaseDate
|
||||
\vspace{4em}
|
||||
|
||||
\rule{6cm}{0.4pt}\\
|
||||
\documentAuthor
|
587
Studienarbeit/bibliographie.bib
Normal file
587
Studienarbeit/bibliographie.bib
Normal file
@ -0,0 +1,587 @@
|
||||
|
||||
@article{marlow_haskell_2010,
|
||||
title = {Haskell 2010 language report},
|
||||
journaltitle = {Available online http://www. haskell. org/(May 2011)},
|
||||
author = {Marlow, Simon and {others}},
|
||||
date = {2010},
|
||||
}
|
||||
|
||||
@article{schwabbauer_use_1975,
|
||||
title = {Use of the latent image technique to develop and evaluate problem-solving skills},
|
||||
volume = {41},
|
||||
issn = {0002-9335},
|
||||
abstract = {This project involved designing, developing and evaluating a simulation module, utilizing the latent image technique. The general topic chosen for this simulation was the laboratory characterization of anemias. Target learner populations included medical technology students, physician assistant students, and pathology residents. Members of all three groups participated in the evaluation of the module and responded to its use in varied settings.},
|
||||
pages = {457--462},
|
||||
number = {12},
|
||||
journaltitle = {The American Journal of Medical Technology},
|
||||
shortjournal = {Am J Med Technol},
|
||||
author = {Schwabbauer, M. L.},
|
||||
date = {1975-12},
|
||||
pmid = {2010},
|
||||
keywords = {Anemia, Hematuria, Humans, Iowa, Medical Laboratory Science, Models, Psychological, Physician Assistants, Problem Solving, Teaching, Teaching Materials},
|
||||
}
|
||||
|
||||
@online{goetz_jep_2016,
|
||||
title = {{JEP} 286: Local-Variable Type Inference},
|
||||
url = {https://openjdk.org/jeps/286},
|
||||
titleaddon = {{JEP} 286: Local-Variable Type Inference},
|
||||
author = {Goetz, Brian},
|
||||
urldate = {2024-04-25},
|
||||
date = {2016-03-08},
|
||||
langid = {english},
|
||||
file = {JEP 286\: Local-Variable Type Inference:/Users/julianschmidt/Zotero/storage/6TH6X9NA/286.html:text/html},
|
||||
}
|
||||
|
||||
@online{darcy_java_2010,
|
||||
title = {The Java Community Process({SM}) Program - {JSRs}: Java Specification Requests - detail {JSR}\# 334},
|
||||
url = {https://jcp.org/en/jsr/detail?id=334},
|
||||
titleaddon = {{JSR} 334: Small Enhancements to the {JavaTM} Programming Language},
|
||||
author = {Darcy, Joe},
|
||||
urldate = {2024-04-25},
|
||||
date = {2010-11-16},
|
||||
langid = {english},
|
||||
file = {The Java Community Process(SM) Program - JSRs\: Java Specification Requests - detail JSR# 334:/Users/julianschmidt/Zotero/storage/JKYYJAC8/detail.html:text/html},
|
||||
}
|
||||
|
||||
@online{darcy_jep_2011,
|
||||
title = {{JEP} 126: Lambda Expressions \& Virtual Extension Methods},
|
||||
url = {https://openjdk.org/jeps/126},
|
||||
titleaddon = {{JEP} 126: Lambda Expressions \& Virtual Extension Methods},
|
||||
author = {Darcy, Joseph D.},
|
||||
date = {2011-11-01},
|
||||
}
|
||||
|
||||
@inproceedings{odersky_pizza_1997,
|
||||
location = {Paris, France},
|
||||
title = {Pizza into Java: translating theory into practice},
|
||||
isbn = {978-0-89791-853-4},
|
||||
url = {http://portal.acm.org/citation.cfm?doid=263699.263715},
|
||||
doi = {10.1145/263699.263715},
|
||||
shorttitle = {Pizza into Java},
|
||||
eventtitle = {the 24th {ACM} {SIGPLAN}-{SIGACT} symposium},
|
||||
pages = {146--159},
|
||||
booktitle = {Proceedings of the 24th {ACM} {SIGPLAN}-{SIGACT} symposium on Principles of programming languages - {POPL} '97},
|
||||
publisher = {{ACM} Press},
|
||||
author = {Odersky, Martin and Wadler, Philip},
|
||||
urldate = {2024-04-25},
|
||||
date = {1997},
|
||||
langid = {english},
|
||||
file = {Volltext:/Users/julianschmidt/Zotero/storage/RSQWTLP7/Odersky und Wadler - 1997 - Pizza into Java translating theory into practice.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@online{cimadamore_jep_2011,
|
||||
title = {{JEP} 101: Generalized Target-Type Inference},
|
||||
url = {https://openjdk.org/jeps/101},
|
||||
titleaddon = {{JEP} 101: Generalized Target-Type Inference},
|
||||
author = {Cimadamore, Maurizio},
|
||||
urldate = {2024-04-25},
|
||||
date = {2011-02-22},
|
||||
file = {JEP 101\: Generalized Target-Type Inference:/Users/julianschmidt/Zotero/storage/NXVIDL23/101.html:text/html},
|
||||
}
|
||||
|
||||
@book{gosling_java_2005,
|
||||
location = {Upper Saddle River, {NJ}},
|
||||
edition = {3},
|
||||
title = {The Java Language Specification, 3rd Edition},
|
||||
isbn = {978-0-321-24678-3},
|
||||
abstract = {Written by the inventors of the language, this book provides the mostauthoritative technical reference for all serious programmers seeking to sharpenand hone their Java programming skills. As the definitive reference book, itprovides programmers with complete, precise, and detailed coverage of theentire Java programming language and defines the current state and evolutionof the language. Java 1.5 aka "Tiger"( and soon to be Java 5.0) will be releasedin the fall of 2004, and this reference supplies coverage on the most recentupdates to the Java language including generics, a tool developers have beenasking to be included in the language for years.},
|
||||
pagetotal = {684},
|
||||
publisher = {Addison Wesley},
|
||||
author = {Gosling, James and Joy, Bill and Jr, Guy L. Steele and Bracha, Gilad},
|
||||
date = {2005-06-14},
|
||||
file = {jls3.pdf:/Users/julianschmidt/Zotero/storage/2A3STVHH/jls3.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@online{buckley_java_2004,
|
||||
title = {The Java Community Process({SM}) Program - {JSRs}: Java Specification Requests - detail {JSR}\# 14},
|
||||
url = {https://www.jcp.org/en/jsr/detail?id=14},
|
||||
titleaddon = {{JSR} 14: Add Generic Types To The {JavaTM} Programming Language},
|
||||
author = {Buckley, Alex},
|
||||
urldate = {2024-04-25},
|
||||
date = {2004-09-30},
|
||||
langid = {english},
|
||||
file = {The Java Community Process(SM) Program - JSRs\: Java Specification Requests - detail JSR# 14:/Users/julianschmidt/Zotero/storage/43BSC4VI/detail.html:text/html},
|
||||
}
|
||||
|
||||
@online{noauthor_jdk_nodate,
|
||||
title = {{JDK} 7 Features},
|
||||
url = {https://openjdk.org/projects/jdk7/features/},
|
||||
urldate = {2024-04-25},
|
||||
file = {JDK 7 Features:/Users/julianschmidt/Zotero/storage/7XCG2WCR/features.html:text/html},
|
||||
}
|
||||
|
||||
@online{noauthor_jdk_nodate-1,
|
||||
title = {{JDK} 10},
|
||||
url = {https://openjdk.org/projects/jdk/10/},
|
||||
urldate = {2024-04-25},
|
||||
file = {JDK 10:/Users/julianschmidt/Zotero/storage/4B425SGD/10.html:text/html},
|
||||
}
|
||||
|
||||
@online{nutter_first_nodate,
|
||||
title = {A First Taste of {InvokeDynamic}},
|
||||
url = {http://blog.headius.com/2008/09/first-taste-of-invokedynamic.html},
|
||||
abstract = {Greetings, readers!
|
||||
Over the past couple weeks I've had a few departures from typical {JRuby} development. I consider it a working vacation. I'm hoping to report on all of it soon, but for now we'll focus on one of the most exciting items: {JSR}-292, otherwise known as},
|
||||
author = {Nutter, Charles Oliver},
|
||||
urldate = {2024-04-25},
|
||||
file = {Snapshot:/Users/julianschmidt/Zotero/storage/SNC2TWBT/first-taste-of-invokedynamic.html:text/html},
|
||||
}
|
||||
|
||||
@inproceedings{plumicke_well-typings_2011,
|
||||
location = {New York, {NY}, {USA}},
|
||||
title = {Well-typings for Javaλ},
|
||||
isbn = {978-1-4503-0935-6},
|
||||
url = {https://dl.acm.org/doi/10.1145/2093157.2093171},
|
||||
doi = {10.1145/2093157.2093171},
|
||||
series = {{PPPJ} '11},
|
||||
abstract = {In the last decade Java has been extended by some features, which are well-known from functional programming languages. In Java 8 the language will be expanded by closures (λ-expressions). In our contribution we give a formal definition for an abstract syntax of a reduced language Javaλ with closures, define the type system, and formalize the subtyping relation. We define the set of types as an extension of the generic type definition for Java 5 types. Finally, we give a type inference system, which describes the typings of Javaλ expressions and statements and we present a type inference algorithm. The type inference algorithm is an adaptation of a type inference algorithm for a typed λ--calculus. The inferred types are well-typings. A well-typing is a conditional type for an expression, where the conditions are given by a set of consistent coercions.},
|
||||
pages = {91--100},
|
||||
booktitle = {Proceedings of the 9th International Conference on Principles and Practice of Programming in Java},
|
||||
publisher = {Association for Computing Machinery},
|
||||
author = {Plümicke, Martin},
|
||||
urldate = {2024-04-24},
|
||||
date = {2011-08-24},
|
||||
keywords = {code generation, language design, program design and implementation, type inference, type system},
|
||||
file = {Full Text PDF:/Users/julianschmidt/Zotero/storage/MV3KS9G9/Plümicke - 2011 - Well-typings for Javaλ.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@article{stadelmeier_global_2022,
|
||||
title = {Global Type Inference for Featherweight Generic Java - Prototype Implementation (Artifact)},
|
||||
rights = {https://creativecommons.org/licenses/by/4.0/legalcode},
|
||||
url = {https://drops.dagstuhl.de/entities/document/10.4230/DARTS.8.2.18},
|
||||
doi = {10.4230/DARTS.8.2.18},
|
||||
abstract = {We implemented a prototype of the type inference algorithm described in the paper "Global Type Inference for Featherweight Generic Java". Our type inference algorithm for Featherweight Generic Java ({GFJ}) is able to calculate the missing types in a Typeless Featherweight Generic Java ({FGJ}-{GT}) program. Inserting those types generates a valid {GFJ} program. We demonstrate this with a prototype implementation. The prototype is a web application which accepts {GFJ}-{GT} programs as input and shows the respective {GFJ} program after the type inference.},
|
||||
journaltitle = {{DROPS}-{IDN}/v2/document/10.4230/{DARTS}.8.2.18},
|
||||
author = {Stadelmeier, Andreas and Plümicke, Martin and Thiemann, Peter},
|
||||
urldate = {2024-04-24},
|
||||
date = {2022},
|
||||
langid = {english},
|
||||
note = {Publisher: Schloss Dagstuhl – Leibniz-Zentrum für Informatik},
|
||||
file = {Full Text PDF:/Users/julianschmidt/Zotero/storage/3YMFJLVR/Stadelmeier et al. - 2022 - Global Type Inference for Featherweight Generic Ja.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@inproceedings{plumicke_introducing_2017,
|
||||
location = {New York, {NY}, {USA}},
|
||||
title = {Introducing Scala-like function types into Java-{TX}},
|
||||
isbn = {978-1-4503-5340-3},
|
||||
url = {https://doi.org/10.1145/3132190.3132203},
|
||||
doi = {10.1145/3132190.3132203},
|
||||
series = {{ManLang} 2017},
|
||||
abstract = {This paper considers the realisation of lambda expressions in Java 8 on the basis of a global type inference algorithm, which we have introduced in Java-{TX}. We demonstrate that the Java 8 approach has indeed some benefits but also a number of drawbacks. In order to eliminate the drawbacks, we take into consideration the approaches in a former experimental Java version (strawman approach) and in Scala. We show that an integration of these approaches eliminates the drawbacks without losing the benefits of the Java 8 approach. Additionally, we adapt our global type inference algorithm to this extended language.},
|
||||
pages = {23--34},
|
||||
booktitle = {Proceedings of the 14th International Conference on Managed Languages and Runtimes},
|
||||
publisher = {Association for Computing Machinery},
|
||||
author = {Plümicke, Martin and Stadelmeier, Andreas},
|
||||
urldate = {2024-04-24},
|
||||
date = {2017-09-27},
|
||||
keywords = {type inference, function types, Java, lambda expressions},
|
||||
file = {Plümicke und Stadelmeier - 2017 - Introducing Scala-like function types into Java-TX.pdf:/Users/julianschmidt/Zotero/storage/T433TNLU/Plümicke und Stadelmeier - 2017 - Introducing Scala-like function types into Java-TX.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@online{noauthor_zotero_nodate,
|
||||
title = {Zotero {\textbar} Downloads},
|
||||
url = {https://www.zotero.org/download/},
|
||||
urldate = {2024-03-31},
|
||||
}
|
||||
|
||||
@incollection{quissanga_comparative_2023,
|
||||
title = {Comparative Study of Information Security in Mobile Operating Systems: Android and Apple {iOS}},
|
||||
isbn = {978-1-80355-651-2},
|
||||
shorttitle = {Comparative Study of Information Security in Mobile Operating Systems},
|
||||
abstract = {This theme addresses information security in mobile operating systems: Android and {iOS}, compare vulnerabilities, and propose security policies, the methodology is qualitative based on bibliographic reference, documentary, and quantitative techniques, which allowed to evaluate the study in detail, the data collected in a systematic way, investigating security measures in mobile phones. It was performed the search to Google Academic® and the Portal de Periódicos Capes. As for the data analysis, it was done in a descriptive way. However, it was concluded that the {iOS} system presents greater information security compared to Android. Virus infections are not of concern at the moment, but other cyber attacks, spywares capture confidential information by taking to the remote server. The attacks can be identified by the victims online, in industrial, and by targeting them individually. Android and {iOS} operating systems are preferred by cybercriminals. As for cyber attacks, social networks are the focus. For security policies, we propose preventive, detective, and corrective measures, assign difficult passwords, use modern {WPA} encryption, Noroot firewall, the Privacy Badger tool for blocking websites, Panopticlick for test web, {VeraCrypt} to encrypt documents, and the Signal app that encrypts calls.},
|
||||
author = {Quissanga, Fernando},
|
||||
date = {2023-04-28},
|
||||
doi = {10.5772/intechopen.109652},
|
||||
file = {Volltext:/Users/julianschmidt/Zotero/storage/XHZC3NJK/Quissanga - 2023 - Comparative Study of Information Security in Mobil.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@article{garg_comparative_2021,
|
||||
title = {Comparative analysis of Android and {iOS} from security viewpoint},
|
||||
volume = {40},
|
||||
issn = {1574-0137},
|
||||
url = {https://www.sciencedirect.com/science/article/pii/S1574013721000125},
|
||||
doi = {10.1016/j.cosrev.2021.100372},
|
||||
abstract = {Smartphone usage has increased exponentially in the recent years. Android and {iOS} are the most popular smartphone platforms, while the ease of use along with the computational power to handle a wide array of applications attracts millions of users worldwide, also raises the security concerns on these platforms. This paper presents a comparative analysis between Android and {iOS} on a wide range of security aspects. It analyzes data for the period 2015-2019 and gives a detailed snapshot of not only the quantum of vulnerabilities, but also their impact. In addition, the paper leverages the well-established security triad i.e. {CIA} (Confidentiality, Integrity, Availability) to compare both the operating systems. The comprehensive and pragmatic approach taken in the paper makes it easier to infer that Android is more susceptible to security breaches and malware attacks as compared to {iOS}. Hence, researchers should divert their efforts and focus on finding solutions to problems pertaining to Android. The paper concludes by laying down future research directions and scope of work, which can be leveraged not only by application developers, but also by researchers. This will help make Android safer for users and will further increase its demand as a mobile operating system.},
|
||||
pages = {100372},
|
||||
journaltitle = {Computer Science Review},
|
||||
shortjournal = {Computer Science Review},
|
||||
author = {Garg, Shivi and Baliyan, Niyati},
|
||||
urldate = {2024-05-02},
|
||||
date = {2021-05-01},
|
||||
keywords = {Android, {iOS}, Malware, Security, Smartphones, Vulnerabilities},
|
||||
file = {ScienceDirect Snapshot:/Users/julianschmidt/Zotero/storage/WKZLXY52/S1574013721000125.html:text/html},
|
||||
}
|
||||
|
||||
@online{corrons_flashlight_2019,
|
||||
title = {Flashlight Apps on Google Play Request Up to 77 Permissions},
|
||||
url = {https://decoded.avast.io/luiscorrons/flashlight-apps-on-google-play-request-up-to-77-permissions/},
|
||||
abstract = {Recently, {FaceApp} was widely discussed on the Internet, because the company behind it is Russian, and the app requests permission to access, among other things, photos. It is clear that {FaceApp} is not malicious, although it raises valid privacy concerns. However, is this just a special case, or should we be concerned about all the […]},
|
||||
titleaddon = {Avast Threat Labs},
|
||||
author = {Corrons, Luis},
|
||||
urldate = {2024-05-02},
|
||||
date = {2019-09-10},
|
||||
langid = {american},
|
||||
file = {Snapshot:/Users/julianschmidt/Zotero/storage/LXZ4YZN2/flashlight-apps-on-google-play-request-up-to-77-permissions.html:text/html},
|
||||
}
|
||||
|
||||
@book{gosling_java_2014,
|
||||
location = {Upper Saddle River, {NJ}},
|
||||
edition = {Java {SE} 8 edition},
|
||||
title = {The Java® language specification},
|
||||
isbn = {978-0-13-390069-9},
|
||||
pagetotal = {758},
|
||||
publisher = {Addison-Wesley},
|
||||
author = {Gosling, James and Joy, Bill and Steele, Guy L. and Bracha, Gilad and Buckley, Alex},
|
||||
date = {2014},
|
||||
note = {{OCLC}: ocn873760233},
|
||||
keywords = {Java (Computer program language)},
|
||||
file = {Gosling et al. - 2014 - The Java® language specification.pdf:/Users/julianschmidt/Zotero/storage/QQVBP9E3/Gosling et al. - 2014 - The Java® language specification.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@book{noauthor_java_nodate,
|
||||
title = {The Java Language Specification, Java {SE} 8 Edition (Java Series)},
|
||||
}
|
||||
|
||||
@online{noauthor_chapter_nodate,
|
||||
title = {Chapter 9. Interfaces},
|
||||
url = {https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html},
|
||||
titleaddon = {Java® {SE} 8 Release Contents ("Specification")},
|
||||
urldate = {2024-05-06},
|
||||
file = {Chapter 9. Interfaces:/Users/julianschmidt/Zotero/storage/GKDPQTFN/jls-9.html:text/html},
|
||||
}
|
||||
|
||||
@online{goetz_java_2010,
|
||||
title = {The Java Community Process({SM}) Program - {JSRs}: Java Specification Requests - detail {JSR}\# 335},
|
||||
url = {https://www.jcp.org/en/jsr/detail?id=335},
|
||||
titleaddon = {{JSR} 335: Lambda Expressions for the {JavaTM} Programming Language},
|
||||
author = {Goetz, Brian},
|
||||
urldate = {2024-05-06},
|
||||
date = {2010-11-16},
|
||||
file = {The Java Community Process(SM) Program - JSRs\: Java Specification Requests - detail JSR# 335:/Users/julianschmidt/Zotero/storage/KJ77QXGF/detail.html:text/html},
|
||||
}
|
||||
|
||||
@online{noauthor_openjdk_nodate,
|
||||
title = {{OpenJDK}: Project Lambda},
|
||||
url = {https://openjdk.org/projects/lambda/},
|
||||
urldate = {2024-05-06},
|
||||
file = {OpenJDK\: Project Lambda:/Users/julianschmidt/Zotero/storage/SWMFTZ94/lambda.html:text/html},
|
||||
}
|
||||
|
||||
@online{noauthor_introduction_nodate,
|
||||
title = {Introduction - {HaskellWiki}},
|
||||
url = {https://wiki.haskell.org/Introduction},
|
||||
urldate = {2024-05-09},
|
||||
}
|
||||
|
||||
@online{noauthor_introduction_nodate-1,
|
||||
title = {Introduction - {HaskellWiki}},
|
||||
url = {https://wiki.haskell.org/Introduction},
|
||||
urldate = {2024-05-09},
|
||||
file = {Introduction - HaskellWiki:/Users/julianschmidt/Zotero/storage/AHZGWBQT/Introduction.html:text/html},
|
||||
}
|
||||
|
||||
@article{marlow_haskell_2010-1,
|
||||
title = {Haskell 2010 language report},
|
||||
journaltitle = {Available online http://www. haskell. org/(May 2011)},
|
||||
author = {Marlow, Simon and {others}},
|
||||
date = {2010},
|
||||
file = {haskell2010.pdf:/Users/julianschmidt/Zotero/storage/YYJ5IGAG/haskell2010.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@book{pierce_types_2002,
|
||||
location = {Cambridge, Massachusetts London, England},
|
||||
title = {Types and programming languages},
|
||||
isbn = {978-0-262-16209-8},
|
||||
pagetotal = {623},
|
||||
publisher = {The {MIT} Press},
|
||||
author = {Pierce, Benjamin C.},
|
||||
date = {2002},
|
||||
}
|
||||
|
||||
@book{stallman_gnu_2004,
|
||||
location = {Boston, Mass},
|
||||
title = {{GNU} Make: a program for directing recompliation ; {GNU} make version 3.81},
|
||||
isbn = {978-1-882114-83-2},
|
||||
shorttitle = {{GNU} Make},
|
||||
pagetotal = {184},
|
||||
publisher = {Free Software Foundation},
|
||||
author = {Stallman, Richard and {McGrath}, Roland and Smith, Paul D.},
|
||||
date = {2004},
|
||||
}
|
||||
|
||||
@online{noauthor_java_nodate-1,
|
||||
title = {Java Development Kit Version 17 {API} Specification},
|
||||
url = {https://docs.oracle.com/en/java/javase/17/docs/specs/man/javac.html#directory-hierarchies},
|
||||
urldate = {2024-05-19},
|
||||
langid = {english},
|
||||
file = {Snapshot:/Users/julianschmidt/Zotero/storage/S5D5X3CK/javac.html:text/html},
|
||||
}
|
||||
|
||||
@book{terry_compilers_1997,
|
||||
location = {London},
|
||||
title = {Compilers and compiler generators: an introduction with C++},
|
||||
isbn = {978-1-85032-298-6},
|
||||
shorttitle = {Compilers and compiler generators},
|
||||
pagetotal = {579},
|
||||
publisher = {International Thomson Computer Press},
|
||||
author = {Terry, Patrick D.},
|
||||
date = {1997},
|
||||
file = {Terry und Terry - 1997 - Compilers and compiler generators an introduction.pdf:/Users/julianschmidt/Zotero/storage/6JKV89EJ/Terry und Terry - 1997 - Compilers and compiler generators an introduction.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@report{plumicke_java-tx_2022,
|
||||
title = {Java-{TX}: The language},
|
||||
url = {https://www.dhbw-stuttgart.de/forschung-transfer/technik/schriftenreihe-insights/},
|
||||
abstract = {Java-{TX} ({TX} steht für Type {eXtended}) ist eine Erweiterung von Java, deren wesentliche neue Eigenschaften globale Typinferenz und echte Funktion- stypen sind. Funktionstypen werden in Java-{TX} ähnlich wie bei Scala eingeführt. Zusätzlich werden sie in das Zieltypen-Konzept von Java in- tegriert, wie es im sogenannten Stawman-Ansatz vorgeschlagen wurde. Diese Erweiterungen führen zu einer neuen Überladungseigenschaft, die Methodendeklaration mit Durchschnittstypen erlaubt. Darüber hinaus haben Java-{TX}-Methoden allgemeinste Typen. Zusätzlich werden Typ- parameter von Klassen und Methoden automatisch generiert. Schließlich werden Parameter von Funktionstypen heterogen übersetzt.},
|
||||
institution = {Fakultät Technik der Dualen Hochschule Baden-Württemberg Stuttgart},
|
||||
author = {Plümicke, Martin and Zink, Etienne},
|
||||
date = {2022-01},
|
||||
langid = {english},
|
||||
file = {Prof. Dr. habil. Plümicke und Zink - 2022 - Java-TX The language.pdf:/Users/julianschmidt/Zotero/storage/DFCLDI9R/Prof. Dr. habil. Plümicke und Zink - 2022 - Java-TX The language.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@online{noauthor_maven_nodate,
|
||||
title = {Maven – Introduction},
|
||||
url = {https://maven.apache.org/what-is-maven.html},
|
||||
urldate = {2024-05-20},
|
||||
file = {Maven – Introduction:/Users/julianschmidt/Zotero/storage/B9499E36/what-is-maven.html:text/html},
|
||||
}
|
||||
|
||||
@online{rose_value_2014,
|
||||
title = {Value Types for Java},
|
||||
url = {https://cr.openjdk.org/~jrose/values/values-0.html},
|
||||
abstract = {This is a sketch of proposed enhancements to the Java Virtual Machine instruction set, and secondarily to the Java Language, to support small immutable, identityless value types. (They may also be considered as identityless aggregates, user-defined primitives, immutable records, or restricted classes.) This is an early draft, intended to describe the overall approach. Readers are expected to be familiar with the {JVM} bytecode instruction set.},
|
||||
author = {Rose, John and Goetz, Brian and Steele, Guy},
|
||||
urldate = {2024-05-26},
|
||||
date = {2014-04},
|
||||
file = {Value Types for Java:/Users/julianschmidt/Zotero/storage/2BXYZARN/values-0.html:text/html},
|
||||
}
|
||||
|
||||
@online{softwarealchemy_streamline_2024,
|
||||
title = {Streamline Your Java Code: A Cheat Sheet for Mastering Streams},
|
||||
url = {https://medium.com/javarevisited/streamline-your-java-code-a-cheat-sheet-for-mastering-streams-e8500f4495fe},
|
||||
shorttitle = {Streamline Your Java Code},
|
||||
abstract = {Java Streams, introduced in Java 8, revolutionized how we work with collections. They offer a declarative and functional approach to…},
|
||||
titleaddon = {Javarevisited},
|
||||
author = {{SoftwareAlchemy}},
|
||||
urldate = {2024-05-25},
|
||||
date = {2024-04-23},
|
||||
langid = {english},
|
||||
file = {Snapshot:/Users/julianschmidt/Zotero/storage/2W523K54/streamline-your-java-code-a-cheat-sheet-for-mastering-streams-e8500f4495fe.html:text/html},
|
||||
}
|
||||
|
||||
@online{baeldung_java_2016,
|
||||
title = {The Java 8 Stream {API} Tutorial {\textbar} Baeldung},
|
||||
url = {https://www.baeldung.com/java-8-streams},
|
||||
abstract = {The article is an example-heavy introduction of the possibilities and operations offered by the Java 8 Stream {API}.},
|
||||
author = {{Baeldung}},
|
||||
urldate = {2024-05-25},
|
||||
date = {2016-06-15},
|
||||
langid = {american},
|
||||
file = {Snapshot:/Users/julianschmidt/Zotero/storage/KH3BN6ZN/java-8-streams.html:text/html},
|
||||
}
|
||||
|
||||
@online{nero_all_2023,
|
||||
title = {All about Java class loaders},
|
||||
url = {https://www.infoworld.com/article/3700054/all-about-java-class-loaders.html},
|
||||
abstract = {Here's a quick look at the three types of class loaders and everything you need to know to work with them in your Java programs.},
|
||||
titleaddon = {{InfoWorld}},
|
||||
author = {Nero, Rafael del},
|
||||
urldate = {2024-05-25},
|
||||
date = {2023-06-29},
|
||||
langid = {english},
|
||||
file = {Snapshot:/Users/julianschmidt/Zotero/storage/8E5TQLJK/all-about-java-class-loaders.html:text/html},
|
||||
}
|
||||
|
||||
@online{baeldung_class_2024,
|
||||
title = {Class Loaders in Java {\textbar} Baeldung},
|
||||
url = {https://www.baeldung.com/java-classloaders},
|
||||
abstract = {Have a look at the behind-the-scenes of loading Java classes during runtime to the {JVM}.},
|
||||
author = {{Baeldung}},
|
||||
urldate = {2024-05-25},
|
||||
date = {2024-05-11},
|
||||
langid = {american},
|
||||
file = {Snapshot:/Users/julianschmidt/Zotero/storage/4XWFE8UP/java-classloaders.html:text/html},
|
||||
}
|
||||
|
||||
@online{noauthor_for-each_nodate,
|
||||
title = {The For-Each Loop},
|
||||
url = {https://docs.oracle.com/javase/8/docs/technotes/guides/language/foreach.html},
|
||||
urldate = {2024-05-23},
|
||||
file = {The For-Each Loop:/Users/julianschmidt/Zotero/storage/H8NNNKR8/foreach.html:text/html},
|
||||
}
|
||||
|
||||
@online{noauthor_java_nodate-2,
|
||||
title = {Java® Platform, Standard Edition \& Java Development Kit Version 21 {API} Specification},
|
||||
url = {https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html},
|
||||
abstract = {declaration: module: java.base, package: java.util, interface: List},
|
||||
urldate = {2024-05-29},
|
||||
langid = {english},
|
||||
file = {Snapshot:/Users/julianschmidt/Zotero/storage/XU4PK5LJ/List.html:text/html},
|
||||
}
|
||||
|
||||
@online{piquerez_variances_nodate,
|
||||
title = {Variances},
|
||||
url = {https://docs.scala-lang.org/tour/variances.html},
|
||||
titleaddon = {Scala Documentation},
|
||||
author = {Piquerez, Adrien and Thompson, Jamie and et. al.},
|
||||
urldate = {2024-05-30},
|
||||
file = {Snapshot:/Users/julianschmidt/Zotero/storage/J377ZJ6M/variances.html:text/html},
|
||||
}
|
||||
|
||||
@online{wagner_creating_2021,
|
||||
title = {Creating Variant Generic Interfaces - C\#},
|
||||
url = {https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/covariance-contravariance/creating-variant-generic-interfaces},
|
||||
abstract = {Learn how to create variant generic interfaces with covariant or contravariant generic type parameters.},
|
||||
author = {Wagner, Bill and Martinez, Jason and Warren, Genevieve and et.al.},
|
||||
urldate = {2024-05-30},
|
||||
date = {2021-09-15},
|
||||
langid = {english},
|
||||
file = {Snapshot:/Users/julianschmidt/Zotero/storage/FKDNJJ4G/creating-variant-generic-interfaces.html:text/html},
|
||||
}
|
||||
|
||||
@misc{zink_heterogene_2022,
|
||||
title = {Heterogene Übersetzung echter Funktionstypen},
|
||||
author = {Zink, Etienne},
|
||||
date = {2022-05-30},
|
||||
}
|
||||
|
||||
@book{vandevoorde_c_2010,
|
||||
location = {Boston, Mass.},
|
||||
title = {C++ templates: the complete guide},
|
||||
isbn = {978-0-201-73484-2},
|
||||
shorttitle = {C++ templates},
|
||||
pagetotal = {528},
|
||||
publisher = {Addison-Wesley},
|
||||
author = {Vandevoorde, David and Josuttis, Nicolai M.},
|
||||
date = {2010},
|
||||
file = {C++ Templates-The Complete Guide.pdf:/Users/julianschmidt/Zotero/storage/NS577488/C++ Templates-The Complete Guide.pdf:application/pdf;Table of Contents PDF:/Users/julianschmidt/Zotero/storage/HIL2ULZY/Vandevoorde und Josuttis - 2010 - C++ templates the complete guide.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@book{naftalin_java_2007,
|
||||
location = {Beijing ; Sebastopol, {CA}},
|
||||
title = {Java generics and collections},
|
||||
isbn = {978-0-596-52775-4},
|
||||
pagetotal = {273},
|
||||
publisher = {O'Reilly},
|
||||
author = {Naftalin, Maurice and Wadler, Philip},
|
||||
date = {2007},
|
||||
note = {{OCLC}: ocm76810468},
|
||||
keywords = {Java (Computer program language), Object-oriented programming (Computer science)},
|
||||
file = {Naftalin und Wadler - 2007 - Java generics and collections.pdf:/Users/julianschmidt/Zotero/storage/CHFZTFU4/Naftalin und Wadler - 2007 - Java generics and collections.pdf:application/pdf},
|
||||
}
|
||||
|
||||
@online{noauthor_openjdk_nodate-1,
|
||||
title = {{OpenJDK} Repository - Javac},
|
||||
url = {https://github.com/openjdk/jdk/blob/master/src/jdk.compiler/share/classes/com/sun/tools/javac},
|
||||
abstract = {{OpenJDK} Repository - javac},
|
||||
titleaddon = {{GitHub}},
|
||||
urldate = {2024-06-01},
|
||||
langid = {english},
|
||||
file = {Snapshot:/Users/julianschmidt/Zotero/storage/IVHPFRJX/javac.html:text/html},
|
||||
}
|
||||
|
||||
@online{noauthor_gcc--cxx_nodate,
|
||||
title = {gcc-in-cxx - {GCC} Wiki},
|
||||
url = {https://gcc.gnu.org/wiki/gcc-in-cxx},
|
||||
urldate = {2024-06-01},
|
||||
file = {gcc-in-cxx - GCC Wiki:/Users/julianschmidt/Zotero/storage/L86FUZPB/gcc-in-cxx.html:text/html},
|
||||
}
|
||||
|
||||
@misc{stallman_using_2024,
|
||||
title = {Using the {GNU} Compiler Collection For gcc version 14.1.0},
|
||||
url = {https://gcc.gnu.org/onlinedocs/gcc-14.1.0/gcc.pdf},
|
||||
publisher = {Free Software Foundation},
|
||||
author = {Stallman, Richard and {GCC Developer Community}},
|
||||
date = {2024},
|
||||
}
|
||||
|
||||
@incollection{goos_variance-based_2002,
|
||||
location = {Berlin, Heidelberg},
|
||||
title = {On Variance-Based Subtyping for Parametric Types},
|
||||
volume = {2374},
|
||||
isbn = {978-3-540-43759-8 978-3-540-47993-2},
|
||||
url = {http://link.springer.com/10.1007/3-540-47993-7_19},
|
||||
pages = {441--469},
|
||||
booktitle = {{ECOOP} 2002 — Object-Oriented Programming},
|
||||
publisher = {Springer Berlin Heidelberg},
|
||||
author = {Igarashi, Atsushi and Viroli, Mirko},
|
||||
editor = {Magnusson, Boris},
|
||||
editorb = {Goos, Gerhard and Hartmanis, Juris and Van Leeuwen, Jan},
|
||||
editorbtype = {redactor},
|
||||
urldate = {2024-06-01},
|
||||
date = {2002},
|
||||
doi = {10.1007/3-540-47993-7_19},
|
||||
note = {Series Title: Lecture Notes in Computer Science},
|
||||
}
|
||||
|
||||
@online{jetbrains_java_2023,
|
||||
title = {Java Programming - The State of Developer Ecosystem in 2023 Infographic},
|
||||
url = {https://www.jetbrains.com/lp/devecosystem-2023},
|
||||
abstract = {Learn about the latest Java trends, usage, and popularity in {JetBrains}' annual report.},
|
||||
titleaddon = {{JetBrains}: Developer Tools for Professionals and Teams},
|
||||
author = {{Jetbrains}},
|
||||
urldate = {2024-06-01},
|
||||
date = {2023},
|
||||
langid = {english},
|
||||
file = {Snapshot:/Users/julianschmidt/Zotero/storage/XXVZB5AH/java.html:text/html},
|
||||
}
|
||||
|
||||
@online{oracle_type_nodate,
|
||||
title = {Type Inference (The Java™ Tutorials {\textgreater} Learning the Java Language {\textgreater} Generics (Updated))},
|
||||
url = {https://docs.oracle.com/javase/tutorial/java/generics/genTypeInference.html},
|
||||
author = {{Oracle}},
|
||||
urldate = {2024-06-01},
|
||||
file = {Type Inference (The Java™ Tutorials > Learning the Java Language > Generics (Updated)):/Users/julianschmidt/Zotero/storage/UG9UXUUI/genTypeInference.html:text/html},
|
||||
}
|
||||
|
||||
@book{thompson_haskell_2011,
|
||||
location = {Harlow, England ; New York},
|
||||
edition = {3rd ed},
|
||||
title = {Haskell: the craft of functional programming},
|
||||
isbn = {978-0-201-88295-7},
|
||||
shorttitle = {Haskell},
|
||||
pagetotal = {585},
|
||||
publisher = {Addison Wesley},
|
||||
author = {Thompson, Simon},
|
||||
date = {2011},
|
||||
keywords = {Functional programming (Computer science)},
|
||||
}
|
||||
|
||||
@online{noauthor_asm_nodate,
|
||||
title = {{ASM}},
|
||||
url = {https://asm.ow2.io/},
|
||||
urldate = {2024-06-02},
|
||||
file = {ASM:/Users/julianschmidt/Zotero/storage/JRXGAA3X/asm.ow2.io.html:text/html},
|
||||
}
|
||||
|
||||
@online{noauthor_antlr_nodate,
|
||||
title = {{ANTLR}},
|
||||
url = {https://www.antlr.org/},
|
||||
urldate = {2024-06-02},
|
||||
file = {ANTLR:/Users/julianschmidt/Zotero/storage/9KDGUILD/www.antlr.org.html:text/html},
|
||||
}
|
||||
|
||||
@online{noauthor_raw_nodate,
|
||||
title = {Raw Types (The Java™ Tutorials {\textgreater} Learning the Java Language {\textgreater} Generics (Updated))},
|
||||
url = {https://docs.oracle.com/javase/tutorial/java/generics/rawTypes.html},
|
||||
urldate = {2024-06-02},
|
||||
file = {Raw Types (The Java™ Tutorials > Learning the Java Language > Generics (Updated)):/Users/julianschmidt/Zotero/storage/QYJ4KVMB/rawTypes.html:text/html},
|
||||
}
|
||||
|
||||
@online{noauthor_string_nodate,
|
||||
title = {String (Java Platform {SE} 8 )},
|
||||
url = {https://docs.oracle.com/javase/8/docs/api/java/lang/String.html},
|
||||
urldate = {2024-06-02},
|
||||
file = {String (Java Platform SE 8 ):/Users/julianschmidt/Zotero/storage/GHKI499F/String.html:text/html},
|
||||
}
|
||||
|
||||
@inproceedings{stadelmeier_java_2015,
|
||||
location = {Cottbus, Deutschland},
|
||||
title = {Java type inference as an Eclipse plugin},
|
||||
url = {https://subs.emis.de/LNI/Proceedings/Proceedings246/article18.html},
|
||||
eventtitle = {45. Jahrestagung der Gesellschaft für Informatik, Informatik 2015, Informatik, Energie und Umwelt},
|
||||
pages = {1841--1852},
|
||||
author = {Stadelmeier, Andreas},
|
||||
date = {2015-09-28},
|
||||
}
|
18
Studienarbeit/content/abstract.tex
Normal file
18
Studienarbeit/content/abstract.tex
Normal file
@ -0,0 +1,18 @@
|
||||
%!TEX root = ../main.tex
|
||||
|
||||
\pagestyle{empty}
|
||||
|
||||
% override abstract headline
|
||||
\renewcommand{\abstractname}{Abstract}
|
||||
|
||||
\begin{abstract}
|
||||
Seit rund 15 Jahren wird an der Dualen Hochschule Baden Württemberg Campus Horb an einer Java-Erweiterung
|
||||
namens Java-TX (Type eXtended) auf Basis von Java 8 geforscht. Java-TX zielt darauf ab, die
|
||||
Java-Programmiersprache durch funktionale Programmierkonzepte wie globale Typinferenz und echte
|
||||
Funktionstypen für Lambda-Ausdrücke zu erweitern. Im Bereich des Compilerbaus gilt die Selbstübersetzung eines
|
||||
Compilers als wichtiges Qualitätsmerkmal. Aus diesem Grund wird im Rahmen dieser Arbeit der in Java verfassten
|
||||
Java-TX-Compiler so weit es möglich ist, in Java-TX übersetzt. Dabei werden der Funktionsumfang und die
|
||||
Praxistauglichkeit des aktuellen Java-TX-Zustands untersucht und bestehende Probleme sowie fehlende
|
||||
Funktionen aufgezeigt. Zusätzlich werden durch die Überarbeitung des Quellcodes die Vorteile von Java-TX im
|
||||
Vergleich zu Java demonstriert.
|
||||
\end{abstract}
|
16
Studienarbeit/content/acronyms.tex
Normal file
16
Studienarbeit/content/acronyms.tex
Normal file
@ -0,0 +1,16 @@
|
||||
%!TEX root = ../main.tex
|
||||
|
||||
\addchap{\acronymsPhrase}
|
||||
|
||||
\begin{acronym}[YTMMM]
|
||||
|
||||
\acro{Java-TX}{Java-Type eXtended}
|
||||
\acro{GNU}{GNU's Not Unix}
|
||||
\acro{JVM}{Java Virtual Machine}
|
||||
\acro{JDK}{Java Development Kit}
|
||||
\acro{WSL}{Windows Subsystem for Linux}
|
||||
\acro{IDE}{Integrated Development Environment}
|
||||
\acro{GCC}{GNU Compiler Collection}
|
||||
\acro{Bash}{Bourne Again Shell}
|
||||
|
||||
\end{acronym}
|
85
Studienarbeit/content/appendix.tex
Normal file
85
Studienarbeit/content/appendix.tex
Normal file
@ -0,0 +1,85 @@
|
||||
% !TeX root = ../main.tex
|
||||
|
||||
\addchap{\appendixPhrase}
|
||||
|
||||
\section{Sourcecode des Bash Skripts zur Kompilierung} \label{app:bash}
|
||||
\begin{lstlisting}[language=bash]
|
||||
#!/bin/bash
|
||||
|
||||
SRCDIR="javatx-src/main/java"
|
||||
DESTDIR="out/src"
|
||||
TESTDESTDIR="out/tests"
|
||||
DEPENDENCIES="dependencies/*"
|
||||
JAVAC_FLAGS="-g:none -nowarn"
|
||||
JAVATX_COMPILER_PATH="JavaTXcompiler.jar"
|
||||
COMPILED_CLASSES="lib/classes"
|
||||
|
||||
#remove all files, if the script is called with parameter "clean"
|
||||
if [ "$1" = "clean" ]; then
|
||||
rm -r "$DESTDIR"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" != "" ]; then
|
||||
echo "invalid argument: $1"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#find all .java/.jav files and store paths in an array
|
||||
#note: somehow absolute paths don't work correctly with find -newer
|
||||
#JAVA_FILES=($(find "$SRCDIR" -name "*.java" -exec realpath {} \;))
|
||||
#JAV_FILES=($(find "$SRCDIR" -name "*.jav" -exec realpath {} \;))
|
||||
JAVA_FILES=($(find "$SRCDIR" -name "*.java"))
|
||||
JAV_FILES=($(find "$SRCDIR" -name "*.jav"))
|
||||
|
||||
|
||||
#create empty arrays for .class file paths
|
||||
JAVA_CLASSES=()
|
||||
JAV_CLASSES=()
|
||||
|
||||
JAVA_CHANGED=()
|
||||
JAV_CHANGED=()
|
||||
|
||||
mkdir -p $DESTDIR
|
||||
|
||||
#fill class files arrays by subsituting .java/.jav -> .class for each file
|
||||
for file in "${JAVA_FILES[@]}"; do
|
||||
#substitute destination dir with source dir
|
||||
class_name="$DESTDIR${file#$SRCDIR}"
|
||||
#substitute *.java -> *.class
|
||||
class_name="${class_name%.java}.class"
|
||||
#if .class file does not exists or .class file older than .java file
|
||||
if [ ! -f "$class_name" ] || [ "$(find "$file" -prune -newer "$class_name")" ]; then
|
||||
JAVA_CHANGED+=("$file")
|
||||
JAVA_CLASSES+=("$class_name")
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
for file in "${JAV_FILES[@]}"; do
|
||||
#substitute destination dir with source dir
|
||||
class_name="$DESTDIR${file#$SRCDIR}"
|
||||
#substitute *.jav -> *.class
|
||||
class_name="${class_name%.jav}.class"
|
||||
#if .class file does not exists or .class file older than .jav file
|
||||
if [ ! -f "$class_name" ] || [ "$(find "$file" -prune -newer "$class_name")" ]; then
|
||||
JAV_CHANGED+=("$file")
|
||||
JAV_CLASSES+=("$class_name")
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
if [ "${#JAV_CHANGED[@]}" -ne 0 ]; then
|
||||
echo "java -jar $JAVATX_COMPILER_PATH -d $DESTDIR -cp "$SRCDIR:$DEPENDENCIES:$COMPILED_CLASSES" ${JAV_CHANGED[@]}"
|
||||
java -jar $JAVATX_COMPILER_PATH -d $DESTDIR -cp "$SRCDIR:$DEPENDENCIES:$COMPILED_CLASSES" "${JAV_CHANGED[@]}"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Fehler beim Kompilieren der Jav-Dateien. Beende das Skript."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${#JAVA_CHANGED[@]}" -ne 0 ]; then
|
||||
echo "javac -d $DESTDIR -cp "$SRCDIR:$DESTDIR:$DEPENDENCIES" $JAVAC_FLAGS ${JAVA_CHANGED[@]}"
|
||||
javac -d $DESTDIR -cp "$SRCDIR:$DESTDIR:$DEPENDENCIES" $JAVAC_FLAGS "${JAVA_CHANGED[@]}"
|
||||
fi
|
||||
\end{lstlisting}
|
401
Studienarbeit/content/chapter/01.tex
Normal file
401
Studienarbeit/content/chapter/01.tex
Normal file
@ -0,0 +1,401 @@
|
||||
%!TEX root = ../../main.tex
|
||||
|
||||
\chapter{Grundlagen}
|
||||
\ac{Java-TX} basiert auf Java 8 und wurde um zwei wesentliche Funktionen erweitert, die man aus funktionalen Programmiersprachen wie Haskell kennt: Globale Typinferenz und echte Funktionstypen. Im folgenden Kapitel werden diese beiden Konzepte genauer erläutert.
|
||||
Zunächst soll aber ein Einblick gegeben werden, was bezüglich dieser Funktionen in Java möglich ist.
|
||||
|
||||
\section{Typinferenz in Java}
|
||||
Java unterstützt verschiedene Arten lokaler Typinferenz. Das bedeutet, dass der Programmierer an bestimmten Stellen des Codes den Datentyp einer Variable nicht explizit angeben muss, sondern der Compiler diesen anhand des Kontext ableiten kann. In diesem Abschnitt werden einige dieser Mechanismen vorgestellt.
|
||||
|
||||
\subsection{Typinferenz bei generischen Methoden}
|
||||
Mit der Einführung von generischen Methoden in Java 5 \cite{buckley_java_2004}, wurde auch eine einfache Form der Typinferenz für die Parameter dieser Methoden eingeführt \cite{gosling_java_2005}[S.451 ff]. Konkret ist es möglich, den Compiler einen generischen Typ einer Methode anhand der Parametertypen inferieren zu lassen.
|
||||
Die Methode \texttt{of} in \texttt{java.util.List} dient als Beispiel zur Veranschaulichung für diese Art von Typinferenz. Sie erzeugt eine Liste des generischen Typs \texttt{T} mit dem übergebenen Parameter als Element. Im folgenden ist die Signatur dieser Methode für einen einzelnen Parameter\footnote{Es gibt mehrere Versionen der Methode \texttt{of} in \texttt{java.util.List} mit einer unterschiedlichen Anzahl an Parametern} dargestellt.
|
||||
|
||||
%TODO: Anmerkung hinzufügen: dies ist die Definition für List.of() mit einem Parameter. Es gibt noch weitere Definitionen für mehrere Parameter.
|
||||
\begin{verbatim}
|
||||
public interface List<E> extends SequencedCollection<E> {
|
||||
...
|
||||
static <E> List<E> of(E e1);
|
||||
...
|
||||
}
|
||||
\end{verbatim}
|
||||
|
||||
Ohne Typinferenz müsste man der Methode beim Aufruf explizit den generischen Typen angeben, wie in \autoref{lst:list_of_type_explizit} gezeigt ist.
|
||||
|
||||
\begin{lstlisting}[caption=List.of() mit explizitem Typ, label=lst:list_of_type_explizit, language=java]
|
||||
List<Integer> intList = List.<Integer>of(1);
|
||||
\end{lstlisting}
|
||||
|
||||
Die Typinferenz erlaubt es allerdings diese explizite Typangabe wegzulassen, da der generische Typ \texttt{T} implizit aus den Typen der Parameterliste resultiert. Dieser kompaktere Aufruf ist in \autoref{lst:list_of_type_implizit} zu sehen.
|
||||
|
||||
\begin{lstlisting}[caption=List.of() mit implizitem Typ, label=lst:list_of_type_implizit, language=java]
|
||||
List<Integer> intList = List.of(1);
|
||||
\end{lstlisting}
|
||||
|
||||
Mit der Veröffentlichung von Java 8 wurde diese Form der Typinferenz weiter verbessert und erweitert \cite{cimadamore_jep_2011}, so dass nun auch komplexere Typinferenz, wie in \autoref{lst:java8_typinferenz} gezeigt wird, möglich ist. Vor Java 8 war dies nicht möglich \cite{cimadamore_jep_2011, oracle_type_nodate}.
|
||||
|
||||
\begin{lstlisting}[caption=Verbesserungen für Typinferenz in Java 8 (Beispiel aus {\cite{oracle_type_nodate}[Target Types]}), label=lst:java8_typinferenz, language=java]
|
||||
public class A{
|
||||
public static void main(String[] args){
|
||||
// In Java 7: error: incompatible types: List<Object> cannot be converted to List<String>
|
||||
// In Java 8: korrekt
|
||||
processStringList(Collections.emptyList());
|
||||
}
|
||||
|
||||
void processStringList(List<String> list){
|
||||
//...
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
\subsection{Der Diamond Operator}
|
||||
|
||||
Java unterstützt seit Version 7 den sogenannten Diamond Operator \texttt{<>} \cite{darcy_java_2010}. Dieser ermöglicht es, den Typ beim Instanziieren einer generischen Klasse nicht explizit anzugeben, sondern vom Compiler errechnen zu lassen \cite{gosling_java_2014}[S.482 ff]. Ein Beispiel dafür ist in \autoref{lst:java7diamond} zu sehen. Der Typ der Liste auf der rechten Seite der Zuweisung muss nicht explizit angegeben werden, sondern kann vom Compiler anhand des Kontextes abgeleitet werden.
|
||||
|
||||
\begin{lstlisting}[caption=Java 7 Diamond Operator, label=lst:java7diamond, language=java]
|
||||
List<String> list = new ArrayList<>();
|
||||
\end{lstlisting}
|
||||
|
||||
Vor Java 7 musste dieser Typ explizit angegeben werden, wie in Listing \ref{lst:java7nodiamond} zu sehen ist.
|
||||
|
||||
\begin{lstlisting}[caption=Java Generics ohne Diamond Operator, label=lst:java7nodiamond, language=java]
|
||||
List<String> list = new ArrayList<String>();
|
||||
\end{lstlisting}
|
||||
|
||||
Erwähnt sei hierbei auch, dass \texttt{List<String> = new ArrayList();} nicht das gleiche ist wie \texttt{List<String> = new ArrayList<>();} ist. Im ersten Fall wird die Liste als Raw Type erstellt \cite{oracle_type_nodate}[Type Inference and Instantiation of Generic Classes]. Aus diesem Grund ist die Angabe des Diamond Operators in diesem Fall wichtig, um den generischen Typen zu erhalten.
|
||||
|
||||
\subsection{Typinferenz bei Lambda Ausdrücken}
|
||||
Auch in Lambda-Ausdrücken, welche in Version 8 hinzugefügt wurden, erlaubt Java lokale Typinferenz \cite{darcy_jep_2011}. Der Typ der Parameter einer Lambda-Funktion kann vom Compiler anhand des Kontextes abgeleitet werden \cite{gosling_java_2014}[S.603 ff], wie in \autoref{lst:lambda} zu sehen ist.
|
||||
Die Methode \texttt{forEach} in Zeile 2 wendet dabei einen gegebenen Lambda Ausdruck auf jeden Eintrag der Liste an. In diesem Fall würde sie jedes Element der Liste ausgeben. Auf Lambda-Ausdrücke wird in \autoref{sec:lambda_java} ausführlich eingegangen.
|
||||
Wie man sehen kann, muss der Typ des Parameters \texttt{s} in Zeile 2 vom Programmierer nicht explizit angegeben werden, da der Compiler weiß, dass es sich bei der Liste \lstinline|list| um eine Liste von Strings handelt. Ein Element der Liste muss somit ein String sein.
|
||||
|
||||
\begin{lstlisting}[caption=Java 8 Lambda-Ausdrücke, label=lst:lambda, language=java]
|
||||
List<String> list = new ArrayList<>();
|
||||
list.forEach(s -> System.out.println(s));
|
||||
\end{lstlisting}
|
||||
|
||||
Es steht dem Entwickler jedoch frei den Typ des Parameters explizit anzugeben, wie in \autoref{lst:lambda_explicit} gezeigt ist.
|
||||
|
||||
\begin{lstlisting}[caption=Lambda-Ausdruck mit explizitem Typ, label=lst:lambda_explicit, language=java]
|
||||
List<String> list = new ArrayList<>();
|
||||
list.forEach((String s) -> System.out.println(s));
|
||||
\end{lstlisting}
|
||||
|
||||
\subsection{Der Typplatzhalter var}
|
||||
|
||||
Ein weiteres Beispiel für lokale Typinferenz ist der Platzhalter \lstinline|var|, welcher mit Java 10 eingeführt wurde \cite{goetz_jep_2016}. Er ermöglicht den Typ einer lokalen Variablen nicht explizit anzugeben zu müssen, wenn dieser unmittelbar aus dem Kontext hervorgeht \cite{goetz_jep_2016}. Ein Beispiel dafür ist in \autoref{lst:java10var} zu sehen.
|
||||
|
||||
\begin{lstlisting}[caption=Java 10 var Platzhalter, label=lst:java10var, language=java]
|
||||
var list = new ArrayList<String>();
|
||||
\end{lstlisting}
|
||||
|
||||
Da der Compiler für den Typcheck den Typ der rechten Seite der Zuweisung ohnehin berechnen muss, ist es ein Leichtes den \texttt{var} Platzhalter zur Kompilierzeit durch den tatsächlichen Typ zu ersetzen. Im Beispiel von oben wäre dies der Typ \texttt{ArrayList<String>}. Die Möglichkeiten sind jedoch schnell erschöpft. So ist es nicht möglich, den Typ einer Methode oder eines Feldes mit \texttt{var} zu deklarieren. Außerdem muss bei der Verwendung die Initialisierung der Variable mit der Deklaration erfolgen \cite{goetz_jep_2016}. Eine Zuweisung zum Literal \glqq{}null\grqq{} ist demnach ebenfalls ungültig. Diese Einschränkungen sind in \autoref{lst:java10var_limits} zu sehen.
|
||||
|
||||
\begin{lstlisting}[caption=Ungültige Verwendung des \lstinline|var| Schlüsselworts, label=lst:java10var_limits, language=java]
|
||||
//Ungueltiger Code
|
||||
var x;
|
||||
x = 10;
|
||||
//Ungueltiger Code
|
||||
var y = null;
|
||||
\end{lstlisting}
|
||||
|
||||
\section{Typinferenz in Java-TX} \label{sec:java_tx_typeinference}
|
||||
Trotz verschiedener Arten der lokalen Typinferenz, die in den letzten Jahren zu Java hinzugefügt wurden, müssen bis heute die Typen in Methodensignaturen und Feldern explizit vom Entwickler angegeben werden. In funktionalen Programmiersprachen wie Haskell existiert hingegen eine globale Typinferenz. Diese erlaubt es auch die Typen der Parametern und des Rückgabewerts einer Methode vom Compiler ableiten zu lassen \cite{thompson_haskell_2011}[S.323 ff].
|
||||
In \autoref{lst:haskell_add} ist die Funktion \lstinline|add|, welche zwei numerische Werte addiert, in Haskell gegeben.
|
||||
Wie man sehen kann, beinhaltet der Quellcode keinerlei Typinformationen. Dennoch ist Haskell eine statisch typisierte Sprache \cite{marlow_haskell_2010}[S.3]. Das bedeutet, dass sämtliche Typinformationen bereits zur Kompilierzeit überprüft werden \cite{pierce_types_2002}[S.2]. Der Haskell Compiler inferiert die Typen also zur Kompilierzeit. Im Fall der Funktion \lstinline|add|, wird der Typ \lstinline|add :: Num a => (a, a) -> a| errechnet. Dieser Typ bedeutet, dass die Funktion \lstinline|add| zwei Werte vom Typ \lstinline|a| entgegennimmt und einen Wert vom selben Typ zurückgibt. \lstinline|a| muss dabei von der Typklasse \lstinline|Num| sein, was in Haskell die numerischen Typen einschließt \cite{marlow_haskell_2010}[S.76, 81]. Die Funktion \lstinline|add| kann also sowohl mit ganzen Zahlen, als auch mit Gleitkommazahlen aufgerufen werden.
|
||||
|
||||
\begin{lstlisting}[caption=Funktion add in Haskell, label=lst:haskell_add, language=gnuplot]
|
||||
add (x, y) = x+y
|
||||
\end{lstlisting}
|
||||
|
||||
Eines der primären Ziele von \ac{Java-TX} ist es daher, die globale Typinferenz in Java zu ermöglichen, um auch Typen von Feldern und Methodensignaturen vom Compiler inferieren lassen zu können.
|
||||
|
||||
Ein Beispiel für die Funktion \lstinline|add| in \ac{Java-TX} ist in \autoref{lst:simple_typeinference_wo_types} zu sehen.
|
||||
|
||||
\begin{lstlisting}[caption=Untypisierte Methode add, label=lst:simple_typeinference_wo_types, language=java]
|
||||
import java.lang.Integer;
|
||||
class Add{
|
||||
public add(a, b) {
|
||||
return a + b;
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
In diesem Beispiel werden ähnlich wie in \autoref{lst:haskell_add} sowohl die Parametertypen, als auch der Rückgabetyp nicht angegeben. Diese Typen werden zur Kompilierzeit anhand des Kontextes abgeleitet. Die resultierenden Typen der Methode sind in \autoref{lst:simple_typeinference_w_types} gegeben. Der Compiler weiß, dass der Operator \lstinline|+| nur für numerische Datentypen und Zeichenketten definiert ist. Da der Algorithmus für die globalen Typinferenz allerdings sehr rechenintensiv ist, werden nur explizit importierte Typen berücksichtigt. In diesem Beispiel wird nur \lstinline|java.lang.Integer| importiert, daher spielen andere numerische Typen und Zeichenketten keine Rolle. Neben den Parametern berechnet der Compiler auch einen möglichen Rückgabetyp. In diesem Fall hat dieser auch den Datentyp \lstinline|java.lang.Integer|, da die Addition von zwei Integern wieder einen Integer ergibt.
|
||||
|
||||
\begin{lstlisting}[caption=Von Typinferenz errechnete Typen für \autoref{lst:simple_typeinference_wo_types}, label=lst:simple_typeinference_w_types, language=java]
|
||||
import java.lang.Integer;
|
||||
class Add{
|
||||
public Integer add(Integer a, Integer b) {
|
||||
return a + b;
|
||||
}
|
||||
}
|
||||
|
||||
\end{lstlisting}
|
||||
|
||||
Ähnlich wie C++ Templates erlaubt dieses Vorgehen es Methoden für verschiedene Datentypen mit gleicher Implementierung nur einmal zu definieren. Der Unterschied besteht darin, dass \ac{Java-TX} den Code für alle Typen, die importiert wurden und die verwendeten Funktionalitäten unterstützen, generiert. C++ generiert den Code nur für die Typen, mit denen das Template explizit aufgerufen wird \cite{vandevoorde_c_2010}[Abschnitt 2.1.2]. Dies ermöglicht es, den Code zu vereinfachen und die Wartbarkeit zu erhöhen. Ein Beispiel dazu ist in \autoref{lst:globaltypeinference2} zu sehen.
|
||||
\newpage
|
||||
\begin{lstlisting}[caption=Methodenüberladungen durch Typinferenz, label=lst:globaltypeinference2, language=java]
|
||||
import java.lang.Integer;
|
||||
import java.lang.String;
|
||||
import java.lang.Double;
|
||||
|
||||
public class Add{
|
||||
public add(a, b) {
|
||||
return a + b;
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
In diesem Fall erzeugt der Compiler die Methode \lstinline|add| jeweils mit der Signatur für die Datentypen \lstinline|java.lang.Integer|, \lstinline|java.lang.String| und \lstinline|java.lang.Double|, wie in \autoref{lst:globaltypeinference2result} gezeigt ist. Denkbar wären mit diesen Imports auch weitere valide Methodensignaturen wie \lstinline{Double add(Integer a, Double b)} oder \lstinline{Double add(Double a, Integer b)}, welche allerdings aktuell nicht untersützt werden.
|
||||
|
||||
\begin{lstlisting}[caption=Resultat der Typinferenz für \autoref{lst:globaltypeinference2}, label=lst:globaltypeinference2result, language=java]
|
||||
import java.lang.Integer;
|
||||
import java.lang.String;
|
||||
import java.lang.Double;
|
||||
public class Add{
|
||||
public Integer add(Integer a, Integer b) {
|
||||
return a + b;
|
||||
}
|
||||
|
||||
public Double add(Double a, Double b) {
|
||||
return a + b;
|
||||
}
|
||||
|
||||
public String add(String a, String b) {
|
||||
return a + b;
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
|
||||
\section{Anonyme Funktionen in Java} \label{sec:lambda_java}
|
||||
Durch die Arbeiten an \glqq{}Project Lambda\grqq{} \cite{noauthor_openjdk_nodate} wurden anonyme Funktionen, sogenannte Lambda Ausdrücke, in Java 8 implementiert \cite{goetz_java_2010}. Lambda Ausdrücke ermöglichen in Java eine kompaktere Schreibweise, um Interfaces zu implementieren, welche nur eine einzige abstrakte Methode enthalten. Diese Interfaces werden als funktionale Interfaces bezeichnet \cite{gosling_java_2014}[S.321 ff].
|
||||
|
||||
\subsection{Funktionale Interfaces und Lambda Ausdrücke} \label{sec:lambda}
|
||||
Ein Beispiel für ein funktionales Interface ist das Interface \lstinline{java.lang.Runnable}, welches nur eine abstrakte Methode mit dem Namen \texttt{run} enthält. \texttt{run} hat keine Parameter und keinen Rückgabewert. Eine Implemetierung dieses Interfaces kann z.B. verwendet werden, um das Verhalten eines Threads zu definieren. Vor der Einführung von Lambda Ausdrücken, war die einfachste Möglichkeit dies zu tun die Verwendung von anonymen Klassen \cite{gosling_java_2014}[S.491 ff]. Dies ist in \autoref{lst:runnable_wo_lambda} zu sehen.
|
||||
|
||||
\begin{lstlisting}[caption=Erstellung eines Threads mit einer anonymen Klasse, label=lst:runnable_wo_lambda, language=java]
|
||||
class Main{
|
||||
public void startThread(){
|
||||
Thread t = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
System.out.println("Hello from Thread");
|
||||
}
|
||||
});
|
||||
t.start();
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
Durch diese Verwendung einer anonymen Klasse, kann eine spezielle Implementierung der Methode \lstinline{run()} erstellt werden, ohne eine neue Klasse zu erstellen, die das Interface implementiert. Allerdings erfordert diese Lösung viel Boilerplate Code, welcher die Lesbarkeit des Codes erschwert. Die eigentliche Logik des Threads ist lediglich durch den Aufruf der \lstinline|println| Methode in Zeile 6 definiert.
|
||||
|
||||
Durch die Einführung von Lambda Ausdrücken kann der benötigte Code für diesen Anwendungsfall deutlich reduziert werden. Ein Lambda Ausdruck kann ein beliebiges funktionales Interface, bzw. dessen abstrakte Methode implementieren. \autoref{lst:runnable_w_lambda} zeigt wie der Code in \autoref{lst:runnable_wo_lambda} durch die Verwendung von Lambda ausdrücken reduziert werden kann.
|
||||
\newpage
|
||||
\begin{lstlisting}[caption=Erstellung eines Threads mit einem Lambda Ausdruck, label=lst:runnable_w_lambda, language=java]
|
||||
class Main{
|
||||
public void startThread(){
|
||||
Thread t = new Thread(() -> System.out.println("Hello from Thread"));
|
||||
t.start();
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
Wie man sehen kann benötigt man für die gleiche Funktionalität nun nur noch 6, statt 11 Zeilen Code. Zusätzlich ist der Code auf das Wesentliche reduziert, wodurch die Lesbarkeit verbessert wurde.
|
||||
|
||||
Wie bereits erwähnt, haben Lambda Ausdrücke in Java keinen eigenen Typen, sondern werden immer einem funktionalen Interface zugeordnet. Man spricht in diesem Kontext von sogenannten Zieltypen (engl. target types). Der Typ muss immer aus dem Kontext hervorgehen. In \autoref{lst:runnable_w_lambda} wird der Lambda Ausdruck dem Interface \lstinline{java.lang.Runnable} zugeordnet. Der Compiler erkennt, dass der Konstruktor der Klasse Thread das funktionale Interface \lstinline{java.lang.Runnable} erwartet und kann somit den Lambda Ausdruck diesem Interface zuordnen.
|
||||
Auf Grund dieser Tatsache ist der Code in \autoref{lst:lambda_with_var} nicht gültig. Der Compiler kann den Typ nicht errechnen, da der Lambda Ausdruck unendlich viele Typen annehmen kann. Dies sind alle funktionalen Interfaces, deren abstrakte Methode keinen Parameter erwarten und \texttt{void} zurückgeben.
|
||||
|
||||
\begin{lstlisting}[caption=Lambda Ausdruck mit var, label=lst:lambda_with_var, language=java]
|
||||
//Ungueltige Syntax
|
||||
var lambda = () -> System.out.println("Hello World!");
|
||||
\end{lstlisting}
|
||||
|
||||
Die Java Standardbibliothek stellt dem Entwickler bereits einige funktionale Interfaces zur Verfügung. Einige davon sind in \autoref{tab:java_functional_interfaces} aufgelistet.
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\begin{tabular}{|l|l|}
|
||||
\hline
|
||||
\textbf{Interface} & \textbf{Abstrakte Methode} \\ \hline
|
||||
java.lang.Runnable & void run() \\ \hline
|
||||
java.util.concurrent.Callable<V> & V call() \\ \hline
|
||||
java.util.function.Consumer<T> & void accept(T t) \\ \hline
|
||||
java.util.function.Supplier<T> & T get() \\ \hline
|
||||
java.util.function.Function<T, R> & R apply(T t) \\ \hline
|
||||
java.util.function.Predicate<T> & boolean test(T t) \\ \hline
|
||||
\end{tabular}
|
||||
\caption{Gängige funktionale Interfaces in der Java Standardbibliothek}
|
||||
\label{tab:java_functional_interfaces}
|
||||
\end{table}
|
||||
|
||||
Wie man \autoref{tab:java_functional_interfaces} entnehmen kann, sind die funktionalen Interfaces der Java Standardbibliothek mit generischen Typparametern definiert. So können die Interfaces für beliebige Referenztypen verwendet werden. Dies bedeutet allerdings auch das die funktionalen Interfaces invariant sind.
|
||||
|
||||
Bevor diese Eigenschaft aber näher spezifiziert wird, müssen einige Begriffe geklärt werden, die in diesem Zusammenhang relevant sind.
|
||||
Invarianz, Kovarianz und Kontravarianz sind Begriffe, die in der Typtheorie verwendet werden, um die Beziehung zwischen Typen zu beschreiben. Die folgenden Definitionen sind angelehnt an \cite{goos_variance-based_2002}[Abschnitt 1].
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
Sei C<T> ein generischer Typ mit dem Typparameter T und A, B Typen mit A $\subtype$\footnote{$\subtype$ steht in diesem Dokument für die Subtyp Beziehung, d.h. A ist ein Subtyp von B} B und A $\neq$ B.
|
||||
|
||||
\begin{definition}[Invarianz]
|
||||
C<T> ist invariant im Bezug auf den Typparameter T, wenn
|
||||
$\texttt{C<A>} \not\subtype \texttt{C<B>} \text{ und } \texttt{C<B>} \not\subtype \texttt{C<A>}$
|
||||
\end{definition}
|
||||
|
||||
\begin{definition}[Kovarianz]
|
||||
C<T> ist kovariant im Bezug auf den Typparameter T, wenn $\texttt{C<A>} \subtype \texttt{C<B>}$.
|
||||
\end{definition}
|
||||
|
||||
\begin{definition}[Kontravarianz]
|
||||
C<T> ist kontravariant im Bezug auf den Typparameter T, wenn $\texttt{C<A>} \supertype \texttt{C<B>}$.
|
||||
\end{definition}
|
||||
|
||||
\begin{definition}[Varianz]
|
||||
C<T> ist variant im Bezug auf den Typparameter T, wenn er entweder kovariant oder kontravariant ist.
|
||||
\end{definition}
|
||||
|
||||
\vspace{2em}
|
||||
|
||||
Generell ist zu erwähnen, dass die Eingabewerte eines Funktionstypen kontravariant und der Rückgabewert kovariant ist. Nach \cite{plumicke_java-tx_2022} gilt also folgende Definition für die Subtypisierung von Funktionstypen.
|
||||
|
||||
\begin{definition}[Subtypisierung für Funktionstypen] \label{def:subtyping_of_function_types}
|
||||
|
||||
Gegeben seien die Funktionstypen
|
||||
|
||||
\begin{center}
|
||||
$(\tau_1, \tau_2, ..., \tau_n) \rightarrow \tau_0$ \\
|
||||
$(\theta_1, \theta_2, ..., \theta_n) \rightarrow \theta_0$
|
||||
\end{center}
|
||||
|
||||
Es gilt:
|
||||
\begin{center}
|
||||
$(\tau_1, \tau_2, ..., \tau_n) \rightarrow \tau_0 \subtype (\theta_1, \theta_2, ..., \theta_n) \rightarrow \theta_0$
|
||||
|
||||
$\forall i \in \{1, \ldots, n\}: \theta_i \subtype \tau_i$ \\
|
||||
und $\tau_0 \subtype \theta_0$
|
||||
\end{center}
|
||||
\end{definition}
|
||||
|
||||
\vspace{2em}
|
||||
|
||||
Generische Typen sind in Java invariant \cite{naftalin_java_2007}[S.15 ff]. Daraus folgt unter anderem auch, dass Subtypisierung nicht wie erwartet möglich ist, z.B. ist
|
||||
\[
|
||||
\texttt{List<Integer>} \not\subtype \texttt{List<Number>}
|
||||
\]
|
||||
|
||||
Diese Einschränkung besteht auch für Funktionstypen. Demnach ist
|
||||
\[
|
||||
\texttt{Function<Integer, Integer>} \not\subtype \texttt{Function<Integer, Number>}
|
||||
\]
|
||||
obwohl dies nach \autoref{def:subtyping_of_function_types} eine valide Subtypisierung wäre.
|
||||
|
||||
\subsection{Wildcards}
|
||||
Um das Subtyp Problem für generische Datentypen zu lösen, wird in Java mit den sogenannten Wildcards use site Varianz ermöglicht. Wildcards bieten die Möglichkeit generische Typparameter kovariant oder kontravariant zu verwenden. Kovarianz wird dabei mit \lstinline|? extends| und Kontravarianz mit \lstinline|? super| erreicht \cite{naftalin_java_2007}[S.17 ff]. So ist durch die Verwendung von Wildcards folgende Subtypisierung möglich:
|
||||
\[
|
||||
\texttt{Function<Integer, Integer>} \subtype \texttt{Function<? super Integer, ? extends Number>}
|
||||
\]
|
||||
Als Java Quellcode ist dieses Beispiel in \autoref{lst:covariance} dargestellt.
|
||||
|
||||
\begin{lstlisting}[caption=Varianz in Java, label=lst:covariance, language=java]
|
||||
Function<Integer, Integer> func1 = x -> x + 1;
|
||||
Function<? super Integer, ? extends Number> func2 = func1;
|
||||
\end{lstlisting}
|
||||
|
||||
Wie man sehen kann, wird die Funktion \lstinline{func1} der Funktion \lstinline{func2} zugewiesen. Daraus folgt, dass \lstinline|func2| ein Subtyp von \lstinline|func1| ist. Dabei ist der Parameter der Funktion \lstinline{func2} ein Supertyp des Parameters der Funktion \lstinline{func1} (Kontravarianz) und der Rückgabewert der Funktion \lstinline{func2} ein Subtyp von dem Rückgabewert der Funktion \lstinline{func1} (Kovarianz). Dies entspricht der Definition für die Subtypisierung für Funktionstypen aus \autoref{def:subtyping_of_function_types}. Use site Varianz führt zwar zu einer erhöhten Flexibilität, da der generische Typ an verschiedenen Stellen im Code unterschiedlich variiert werden kann, aber es erschwert auch die Lesbarkeit des Codes.
|
||||
Außerdem muss sich der Entwickler um die korrekte Verwendung der Varianz kümmern, was leicht zu Typfehlern führen kann. Einfacher wäre es, wenn die Varianz direkt bei der Deklaration der generischen Typen festgelegt werden könnte. Dies wird als declaration site Varianz bezeichnet und wird von vielen Sprachen wie Scala oder C\# unterstützt \cite{piquerez_variances_nodate, wagner_creating_2021}. Declaration site Varianz ist allerdings weniger flexibel, da die Varianz des Typen immer die gleiche bleibt und nicht an verschiedenen Stellen im Code variiert werden kann.
|
||||
|
||||
\section{Echte Funktionstypen in Java-TX}
|
||||
\ac{Java-TX} löst das Subtypisierung Problem durch die Einführung von echten Funktionstypen. Dadurch bekommen Lambda Ausdrücke echte Typen, welche nicht vom Kontext abhängig sind. Die Funktionstypen werden in \ac{Java-TX} laut \cite{plumicke_java-tx_2022} mit der folgenden Syntax definiert:
|
||||
\begin{center}
|
||||
$(\tau_1, \tau_2, ..., \tau_N) \rightarrow \tau_0 \equiv FunN\$\$<\tau_1, \tau_2, ..., \tau_N, \tau_0>$ \\
|
||||
$(\tau_1, \tau_2, ..., \tau_N) \rightarrow void \equiv FunVoidN\$\$<\tau_1, \tau_2, ..., \tau_N>$
|
||||
\end{center}
|
||||
|
||||
Außerdem sind Argumente der Funktionstypen automatisch kontravariant und der Rückgabewert kovariant. Dies erlaubt die Subtypisierung von Funktionstypen ohne use site Varianz, was zur besseren Lesbarkeit und weniger Fehleranfälligkeit führt.
|
||||
Tatsächlich ist die Verwendung von Wildcards für die \ac{Java-TX} Funktionstypen nicht erlaubt \cite{plumicke_introducing_2017}[Abschnitt 6]. In \autoref{lst:subtyping_of_function_types} ist ein Beispiel für die Subtypisierung von Funktionstypen in \ac{Java-TX} zu sehen ist. Hier lässt sich die Funktion \lstinline{func1} der Funktion \lstinline{func2} zuweisen, da das Argument der Funktion \lstinline{func1} ein Supertyp des Arguments der Funktion \lstinline{func2} ist und der Rückgabewert der Funktion \lstinline{fun1} ein Subtyp des Rückgabewerts der Funktion \lstinline{fun2} ist, daher ist \lstinline|fun1| nach \autoref{def:subtyping_of_function_types} ein Subtyp von \lstinline|fun2|. Dieser Code ist leichter lesbar und verständlicher als der Java Code in \autoref{lst:covariance}. Außerdem korrespondiert er direkt mit der theoretischen Grundlage in \autoref{def:subtyping_of_function_types}.
|
||||
|
||||
\begin{lstlisting}[caption=Subtypisierung von Funktionstypen in Java-TX, label=lst:subtyping_of_function_types, language=java]
|
||||
Fun1$$<Number, Integer> func1 = x -> x.intValue() + 1;
|
||||
Fun1$$<Integer, Integer> func2 = func1;
|
||||
\end{lstlisting}
|
||||
|
||||
Echte Funktionstypen ermöglichen in \ac{Java-TX} die Definition von Funktionen in einem beliebigen Kontext. Ein Beispiel hierzu ist in \autoref{lst:lambda_with_function_type} zu sehen. In diesem Fall inferiert der Compiler den Typ \lstinline|Fun2$$<Integer, Integer, Integer>|. In Java ist die Verwendung von \lstinline|var| in diesem Kontext nicht möglich, wie in \autoref{lst:lambda_with_var} gezeigt wurde.
|
||||
|
||||
\begin{lstlisting}[caption=Lambda Ausdruck ohne Typkontext, label=lst:lambda_with_function_type, language=java]
|
||||
import java.lang.Integer;
|
||||
public class Main{
|
||||
main(){
|
||||
var add = (x, y) -> x + y;
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
\section{GNU Make} \label{sec:make}
|
||||
\ac{GNU} Make ist ein Build-Management-Tool, welches von Richard Stallman und Roland McGrath entwickelt wurde \cite{stallman_gnu_2004}[S.1]. Es wird hauptsächlich verwendet, um C Programme automatisiert zu kompilieren und zu linken. Make nutzt inkrementelle Kompilierung, d.h. es ermittelt mittels Timestamps welche Teile des Programms nach Änderungen des Quellcodes neu kompiliert werden müssen \cite{stallman_gnu_2004}[S.5].
|
||||
Grundsätzlich werden bei Make verschiedene Regeln in einem sogenannten Makefile definiert. Diese Regeln bestehen aus Zielen (targets), Abhängigkeiten (prerequisites) und Befehlen (recipe)\cite{stallman_gnu_2004}[S.3]. Die Befehle werden ausgeführt, wenn die Abhängigkeiten neuer als die Ziele sind. Die Struktur einer Regel ist in \autoref{lst:make_rule} zu sehen.
|
||||
|
||||
\begin{lstlisting}[caption=Aufbau einer Makefile-Regel aus {\cite{stallman_gnu_2004}[S.3]}, label=lst:make_rule]
|
||||
target ... : prerequisites ...
|
||||
recipe
|
||||
...
|
||||
...
|
||||
\end{lstlisting}
|
||||
|
||||
Ein einfaches Makefile für ein C-Programm könnte wie das Beispiel in \autoref{lst:sample_makefile} aussehen. Die Regeln in diesem Beispiel dienen zur Compilierung des Programms \texttt{edit}. Auf der linken Seite einer Regel steht nun immer die Quelldatei, die erstellt werden soll. Auf der rechten Seite stehen die Abhängigkeiten, die für die Erstellung der Quelldatei benötigt werden. Die Befehle, die ausgeführt werden, wenn die Abhängigkeiten neuer sind als das Ziel, stehen unterhalb der Regel. In diesem Fall wird das Programm \texttt{edit} aus den Objektdateien \texttt{main.o, kbd.o, command.o, display.o, insert.o, search.o, files.o} und \texttt{utils.o} gebaut. Die Objektdateien werden aus den entsprechenden Quelldateien erstellt. Mit dem Befehl \lstinline|make clean| können alle erstellten Dateien gelöscht werden. \lstinline|clean| ist hierbei ein sogenanntes Phony Target. Das bedeutet, dass es sich nicht um eine Datei handelt. Vielmehr wird der definierte Befehl ausgeführt, sobald der Benutzer \lstinline|make clean| aufruft \cite{stallman_gnu_2004}[S.31].
|
||||
|
||||
\begin{lstlisting}[caption=Beispiel eines Makefiles aus {\cite{stallman_gnu_2004}[S.4]}, label=lst:sample_makefile]
|
||||
edit : main.o kbd.o command.o display.o \
|
||||
insert.o search.o files.o utils.o
|
||||
cc -o edit main.o kbd.o command.o display.o \
|
||||
insert.o search.o files.o utils.o
|
||||
main.o : main.c defs.h
|
||||
cc -c main.c
|
||||
kbd.o : kbd.c defs.h command.h
|
||||
cc -c kbd.c
|
||||
command.o : command.c defs.h command.h
|
||||
cc -c command.c
|
||||
display.o : display.c defs.h buffer.h
|
||||
cc -c display.c
|
||||
insert.o : insert.c defs.h buffer.h
|
||||
cc -c insert.c
|
||||
search.o : search.c defs.h buffer.h
|
||||
cc -c search.c
|
||||
files.o : files.c defs.h buffer.h command.h
|
||||
cc -c files.c
|
||||
utils.o : utils.c defs.h
|
||||
cc -c utils.c
|
||||
.PHONY : clean
|
||||
clean :
|
||||
rm edit main.o kbd.o command.o display.o \
|
||||
insert.o search.o files.o utils.o
|
||||
\end{lstlisting}
|
||||
|
||||
\ac{GNU} make bietet neben diesen grundlegenden make Funktionalitäten noch weitere mächtige Funktionen, z.B. die Möglichkeit Variablen zu definieren, shell Befehle innerhalb des Makefiles aufzurufen oder die Verwendung von Wildcards, um dynamische Makefiles zu erstellen.
|
||||
Für Hochsprachen wie Java werden meistens spezielle Build-Management-Tools wie Maven oder Gradle verwendet \cite{jetbrains_java_2023}. Diese sind jedoch oft speziell auf diese Sprache entwickelt weniger flexibel als make.
|
||||
|
||||
\section{Selbstkompilierende Compiler}
|
||||
Im Compilerbau gilt ein selbstkompilierender Compiler als Qualitätsmerkmal. Ein Compiler ist selbstkompilierend, wenn er in der Sprache geschrieben ist, die er kompiliert. Dies bedeutet, dass der Compiler in der Lage ist, seinen eigenen Quellcode zu kompilieren. In der Regel gibt es in jeder großen Programmiersprache mindestens einen Compiler, der selbstkompilierend ist. Bekannte Beispiel hierfür sind der \gls{javac} Compiler, der in Java geschrieben ist \cite{noauthor_openjdk_nodate-1} und Java Code kompiliert und der C++ Compiler der \ac{GCC}, der seit einigen Jahren in C++ geschrieben ist \cite{noauthor_gcc--cxx_nodate} und unter anderem C++ Code kompilieren kann \cite{stallman_using_2024}[S.5].
|
||||
Laut \cite{terry_compilers_1997}[Abschnitt 3.4] bieten selbstkompilierende Compiler im Wesentlichen 4 Vorteile:
|
||||
\begin{itemize}
|
||||
\item Es stellt einen nicht trivialen Test der Funktionsfähigkeit des Compilers dar.
|
||||
\item Sobald der selbstkompilierende Compiler einmal implementiert ist, ist die Entwicklung ohne die Abhängigkeit anderer Übersetzungssysteme möglich.
|
||||
\item Alle Verbesserungen, die am Backend des Compilers vorgenommen werden, wirken sich sowohl auf den Compiler, als auch auf den generierten Code aus.
|
||||
\item Es bietet eine umfassende Überprüfung der Selbstkonsistenz des Compilers. Der Compiler sollte in der Lage sein, seinen eigenen Quellcode zu kompilieren.
|
||||
\end{itemize}
|
||||
|
||||
Der Prozess einen selbstkompilierenden Compiler zu erstellen, kann mit sogenannten T-Diagrammen visualisiert werden. In \autoref{fig:self_compiling_compiler_java_tx} ist ein solches Diagramm für einen selbstkompilierenden Compiler in \ac{Java-TX} zu sehen. Auf der linken eines T's ist dabei die Eingabesprache zu sehen, auf der rechten Seite die Ausgabesprache und in der Mitte die Sprache, in der der Compiler geschrieben ist. In diesem Fall ist das rote T der bereits bestehende Compiler in Java-TX, der den \ac{Java-TX} Code in Bytecode übersetzt. Der blaue T ist das langfristige Ziels des Projekts \JTXCinJTX, also ein Compiler der in \ac{Java-TX} geschrieben ist und \ac{Java-TX} Quelldateien in Bytecode kompiliert. Die Anordnung der T's symbolisiert, dass der ursprüngliche Compiler den neuen Compiler initial kompiliert.
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\begin{tikzpicture}[scale=2, every node/.style={scale=1}]
|
||||
\draw[draw=blue] (1,0) -- (0,0) -- (0,1) -- (3,1) -- (3,0) -- (2,0) -- (2, -1.1) -- (1, -1.1) -- cycle;
|
||||
\node at (0.5, 0.5) {Java-TX};
|
||||
\node at (1.5, -0.6) {Java-TX};
|
||||
\node at (2.5, 0.5) {Bytecode};
|
||||
\draw[draw=red] (3.1,-1.1) -- (2.1,-1.1) -- (2.1,-0.1) -- (5.1,-0.1) -- (5.1,-1.1) -- (4.1,-1.1) -- (4.1, -2.2) -- (3.1, -2.2) -- cycle;
|
||||
\node at (2.6, -0.6) {Java-TX};
|
||||
\node at (3.6, -1.65) {Java};
|
||||
\node at (4.6, -0.6) {Bytecode};
|
||||
\end{tikzpicture}
|
||||
\caption{Selbstkompilierender Compiler in Java-TX}
|
||||
\label{fig:self_compiling_compiler_java_tx}
|
||||
\end{figure}
|
251
Studienarbeit/content/chapter/02.tex
Normal file
251
Studienarbeit/content/chapter/02.tex
Normal file
@ -0,0 +1,251 @@
|
||||
%!TEX root = ../../main.tex
|
||||
|
||||
\chapter{Aufbau der Umgebung}
|
||||
|
||||
\section{Voraussetzungen} \label{sec:prequisites}
|
||||
Der aktuelle \JTXC{} ist in Java implementiert. Da \ac{Java-TX} ein Superset von Java 8\footnote{Es existieren einige Einschränkungen vgl. \cite{plumicke_java-tx_2022}[S.2]} ist, kann der Quellcode im Wesentlichen übernommen werden. Es müssen lediglich die inferierbaren Typinformationen entfernt werden, um die Vorteile von \ac{Java-TX} auch zu nutzen. Da sowohl Java, als auch \ac{Java-TX} Java Bytecode generieren, ist es möglich, \ac{Java-TX} und Java Dateien zu mischen. Dadurch kann der Compiler sukzessive in \ac{Java-TX} übersetzt werden. Der Vorteil daran ist, dass man nach jeder übersetzten Datei einen funktionsfähigen Compiler hat, der zu einem gewissen Grad bereits aus \ac{Java-TX} Dateien besteht. Auf diesem Zwischenstand können dann z.B. auch Tests aufgeführt werden, um die Funktionalität zu prüfen.
|
||||
|
||||
Ein Problem besteht darin, dass der \JTXC{} \texttt{.jav}\footnote{\ac{Java-TX} Quelldateien haben die Dateiendung \texttt{.jav}}-Dateien und \texttt{.class}-Dateien lesen kann, während der \gls{javac} Compiler \texttt{.java}-Dateien und \texttt{.class}-Dateien einlesen kann. Jedoch kann der \JTXC{} keine \texttt{.java}-Dateien lesen und der \gls{javac} Compiler natürlich keine \texttt{.jav}-Dateien. Das bedeutet, dass zirkuläre Abhängigkeiten zwischen Java und \ac{Java-TX} Dateien nicht ohne Weiteres möglich sind. Dieses Problem ist in \autoref{fig:circular_dependency} visualisiert. Ein Pfeil symolisieren dabei Abhängigkeiten zu einer anderen Datei. Wenn der \JTXC{} zuerst aufgerufen wird, kann er die Java Datei nicht lesen und umgekehrt. Selbst wenn die Abhängigkeiten nicht zirkulär sind, muss die genaue Reihenfolge der Kompilierung definiert sein. Dies bedeutet das der Build-Prozess für den \JTXCinJTX{} sehr komplex werden würde.
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\begin{tikzpicture}[node distance=2cm,thick]
|
||||
% Nodes
|
||||
\node[draw, circle] (file1) {file1.java};
|
||||
\node[draw, circle, right=of file1] (file2) {file2.jav};
|
||||
|
||||
% Arrows
|
||||
\draw[->] (file1) to[bend left=45] (file2);
|
||||
\draw[->] (file2) to[bend left=45] (file1);
|
||||
\end{tikzpicture}
|
||||
\caption{Zirkuläre Abhängigkeiten zwischen Java und \ac{Java-TX} Dateien}
|
||||
\label{fig:circular_dependency}
|
||||
\end{figure}
|
||||
|
||||
|
||||
Aktuell wird dieses Problem gelöst indem der gesamten Compiler zu Beginn einmal in seiner Ursprungsform (also nur \texttt{.java} Dateien) mit \gls{javac} kompiliert wird. Dann liegt der komplette \JTXC{} in Form von \texttt{.class} Dateien vor. Anschließend muss diese Hierarchie nur noch als Classpath des \JTXC{} angegeben werden. Der \JTXC{} kann nun die \texttt{.class} Dateien lesen, die zur jeweiligen \texttt{.java} Datei korrespondieren. Wichtig ist an dieser Stelle natürlich, dass die \texttt{.class}-Dateien den gleichen Stand, wie die Quelldateien haben. Dieses Verhalten ist in \autoref{fig:circular_dependency_resolved} gezeigt. Die Grafik zeigt, dass der \JTXC{} zur Kompilierung der \texttt{.jav} Datei die zuvor generierte \texttt{.class} Datei von \texttt{file1} verwendet. Wenn später dann \texttt{file1} von \gls{javac} kompiliert wird, wurde \texttt{file2.class} bereits vom \JTXC{} erstellt. Der \gls{javac} Compiler benötigt die vorkompilierten Klassen also nicht mehr im Classpath und kann die vom \JTXC{} generierten .class Dateien verwenden. Natürlich ist es für diese Lösung notwendig, dass der \JTXC{} zuerst alle \lstinline|.jav| Dateien kompiliert, bevor der \gls{javac} Compiler auf Basis der generierten \texttt{.class} Dateien, alle \texttt{.java} kompiliert.
|
||||
Diese Reihenfolge ist aber ohnehin notwendig, damit \gls{javac} seinen Bytecode mit den korrekten Typen generieren kann, die der \JTXC{} inferiert hat.
|
||||
Diese Lösung ist zwar nicht ideal, da man eine Abhängigkeit zum gesamten vorkompilierten Projekt benötigt. Da der \JTXC{} aber keine \texttt{.java} Dateien lesen kann, ist es vermutlich die einzige Möglichkeit, zirkuläre Abhängigkeiten zwischen \texttt{.java} und \texttt{.jav} Dateien zu lösen.
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\begin{tikzpicture}[node distance=2cm, thick]
|
||||
% Nodes
|
||||
\node[draw, circle] (file1) {file1.java};
|
||||
\node[draw, circle, right=of file1] (file2) {file2.jav};
|
||||
\node[draw, circle, below=0.7cm of file1] (file1_class) {file1.class};
|
||||
|
||||
% Arrows
|
||||
\draw[->] (file1) to[bend left=45] (file2);
|
||||
\draw[->, dashed] (file2) to[bend left=45] (file1);
|
||||
\draw[->] (file2) -- (file1_class);
|
||||
|
||||
\begin{scope}[on background layer]
|
||||
\node[fit=(file1_class), draw, fill=gray!20, inner sep=0.5cm] {};
|
||||
\end{scope}
|
||||
|
||||
\end{tikzpicture}
|
||||
\caption{Zirkuläre Abhängigkeiten zwischen Java und \ac{Java-TX} Dateien behoben}
|
||||
\label{fig:circular_dependency_resolved}
|
||||
\end{figure}
|
||||
|
||||
Die aktuelle \JTXC{} Implementierung automatisiert den Build-Prozess mit Maven. Java ist für die Verwendung von Java basierten Sprachen entwickelt worden \cite{noauthor_maven_nodate}. Da Maven keine \ac{Java-TX} Unterstützung bietet, muss der Build-Prozess für den \JTXCinJTX{} manuell angepasst werden. Dazu wurden zwei Lösungsansätze erarbeitet, die in den folgenden Abschnitten beschrieben werden.
|
||||
|
||||
\section{Kompilierung mit Make}
|
||||
Der erste Ansatz der Verfolgt wurde, war die Kompilierung mittels \ac{GNU} make (vgl. \autoref{sec:make}) umzusetzen. Make ist sehr flexibel und ist vielseitig einsetzbar. Um nicht alle Quelldateien einzeln angeben zu müssen, werden Wildcards verwendet. Außerdem bietet make den Vorteil, das nur geänderte Dateien neu kompiliert werden. Dies ist besonders bei großen Projekten von Vorteil, da nicht alle Dateien neu kompiliert werden müssen. Das verwendete Makefile ist in \autoref{lst:makefile} zu sehen.
|
||||
|
||||
\begin{lstlisting}[caption={Makefile für die Kompilierung des \JTXCinJTX{}}, label={lst:makefile}, language=make]
|
||||
JFLAGS = -g:none -implicit:none -nowarn
|
||||
JC = javac
|
||||
JTX = JavaTXcompiler-1.0-jar-with-dependencies.jar
|
||||
SRCDIR = javatx-src/main/java
|
||||
DESTDIR = out
|
||||
|
||||
# Use find to locate all .java and .jav files recursively
|
||||
JAVASOURCES := $(shell find $(SRCDIR) -name '*.java')
|
||||
JAVSOURCES := $(shell find $(SRCDIR) -name '*.jav')
|
||||
|
||||
# Convert .java files to .class files with the same directory structure
|
||||
JAVACLASSES := $(patsubst $(SRCDIR)/%.java,$(DESTDIR)/%.class,$(JAVASOURCES))
|
||||
JAVCLASSES := $(patsubst $(SRCDIR)/%.jav,$(DESTDIR)/%.class,$(JAVSOURCES))
|
||||
|
||||
default: $(JAVCLASSES) $(JAVACLASSES)
|
||||
|
||||
# Rule for compiling .jav files
|
||||
$(DESTDIR)/%.class: $(SRCDIR)/%.jav
|
||||
java -jar $(JTX) -d "$(DESTDIR)" -cp "$(SRCDIR):$(DESTDIR):target/dependencies/" $<
|
||||
|
||||
# Rule for compiling .java files
|
||||
$(DESTDIR)/%.class: $(SRCDIR)/%.java
|
||||
$(JC) -d $(DESTDIR) -cp "$(SRCDIR):$(DESTDIR):target/dependencies/*" $(JFLAGS) $<
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) -r $(DESTDIR)/*
|
||||
\end{lstlisting}
|
||||
|
||||
Im ersten Abschnitt werden einige globale Variablen, wie den Ort des \gls{javac} und \JTXC{} und der Quell- und Zielordner definiert. Dann werden mit dem shell Befehl \texttt{find} alle Dateien die auf .java und .jav enden in den Variablen \texttt{JAVASOURCES} und \texttt{JAVSOURCES} gespeichert. Der \texttt{find} Befehl geht dabei rekursiv vor und beachtet auch alle Unterverzeichnisse des Quellverzeichnisse. In diesem Fall findet der Befehl also alle Dateien in der Packethierarchie. Danach wird der \texttt{patsubst} Befehl von make verwendet, um den Pfand, an dem die korrespondierende \texttt{.class} Datei liegen wird, zu substituieren. So wird z.B. die Liste der Quelldateien
|
||||
|
||||
\begin{verbatim}
|
||||
javatx-src/main/java/de/dhbwstuttgart/typeinference/assumptions/Assumption.java
|
||||
javatx-src/main/java/de/dhbwstuttgart/typeinference/assumptions/FieldAssumption.java
|
||||
\end{verbatim}
|
||||
|
||||
zu einer Liste mit folgenden korrespondierenden Zieldateien
|
||||
|
||||
\begin{verbatim}
|
||||
out/de/dhbwstuttgart/typeinference/assumptions/Assumption.class
|
||||
out/de/dhbwstuttgart/typeinference/assumptions/FieldAssumption.class
|
||||
\end{verbatim}
|
||||
|
||||
Die genaue Syntax des \lstinline|patsubst| Befehls kann in \cite{stallman_gnu_2004}[S.92] nachgelesen werden.
|
||||
In der nächsten Zeile wird die Standardregel für das Makefile definiert. In \ac{GNU} make ist die erste Regel diejenige, die aufgerufen wird, wenn der make Befehl ohne Parameter aufgerufen wird \cite{stallman_gnu_2004}[S.109]. Diese Regel versucht alle Dateien in \lstinline|$(JAVCLASSES)| und \lstinline|$(JAVSOURCES)| zu kompilieren. Dazu werden die nächste beiden Regeln verwendet.
|
||||
|
||||
Die erste Regel kompiliert \ac{Java-TX} Dateien. Dazu liegt der Compiler als JAR-Archiv vor. Der Compiler wird mit dem Befehl \lstinline|java -jar| aufgerufen, welcher die Ausführung von JAR-Archiven ermöglicht. Der \texttt{-d} Parameter gibt den Zielordner an, in dem die \texttt{.class} Datei gespeichert wird. Der \texttt{-cp} Parameter gibt die Klassenpfade an, die der Compiler benötigt. In diesem Fall sind das der Quellordner, der Zielordner und die Abhängigkeiten des Projekts. Der \lstinline|$<| Operator gibt den Pfad der ersten Abhängigkeit an \cite{stallman_gnu_2004}[S.131]. In diesem Fall ist das die \texttt{.jav} Quelldatei. Das \texttt{\%} Symbol dient als Wildcard und steht für eine beliebige Zeichenkette. Eine solche Regeln nennt man auch Musterregel (engl. Pattern Rule) \cite{stallman_gnu_2004}[S.129].
|
||||
|
||||
Die zweite Regel kompiliert \lstinline|.java| Quelldateien. Sie unterscheidet sich nur marginal von der ersten Regel. Lediglich der Aufruf des Compilers und die Dateiendung der Regel wurden angepasst, da hierzu der \gls{javac} Compiler verwendet wird. Die Parameter \lstinline|-d| und \lstinline|-cp| sind identisch. Lediglich einige weitere Parameter, die Anfags in die Variable \lstinline|JFLAGS| gespeichert wurden, werden dem Compiler übergeben. Der Parameter |g:none| bedeutet, dass keine Debuginformationen generiert werden sollen. Das macht den generierten Bytecode in solch einem Entwicklungsumfeld leichter lesbar. Der Parameter |implicit:none| bedeutet, dass Abhängigkeit nicht impliziert kompiliert werden sollen. Weiteres dazu in \autoref{sec:performance}. Der Parameter \lstinline|nowarn| bedeutet schließlich, dass keine Warnungen ausgegeben werden sollen.
|
||||
|
||||
Die letzte Regel des Makefiles ist eine Phony Regel (vgl. \autoref{sec:make}). Sie löscht den Inhalt des Zielordners. Dazu wird der \lstinline|rm| Befehl mit dem \lstinline|-r| Parameter verwendet, um rekursiv alle Dateien und Ordner zu löschen. Der \lstinline|*| Operator steht für alle Dateien und Ordner im Zielordner. Die Variable RM ist eine vordefinierte Variable in make, die den Befehl zum Löschen von Dateien definiert \cite{stallman_gnu_2004}[S. 125 ff.].
|
||||
Die Regel wird ausgeführt, wenn der make Befehl mit dem Parameter \lstinline|clean| aufgerufen wird.
|
||||
|
||||
|
||||
|
||||
\subsection{Performanceprobleme} \label{sec:performance}
|
||||
Das Makefile ist funktionstüchtig und kompiliert das Projekt korrekt, allerdings geht eine komplette Kompilierung des Projekts mehrere Minuten, während die originale Java Version des Compilers nur wenige Sekunden benötigt. Dabei ist zu erwähnen, dass ein Großteil der Performanceeinbußen nicht durch die Typinferenz des \JTXC{} entsteht, sondern schon der \gls{javac} Compiler deutlich langsamer als beim ursprünglichen Compiler ist. Dies hängt damit zusammen, dass der \gls{javac} Compiler für jede Datei einzeln aufgerufen wird. Dies resultierte vor allem auf Grund folgender zwei Gründe in einer schlechteren Performance:
|
||||
\begin{itemize}
|
||||
\item Der \gls{javac} Compiler kompiliert standardmäßig alle Abhängigkeiten implizit mit. Da der Compiler aber sowieso für jede Datei aufgerufen wird, bedeutet das, dass viele Dateien mehrfach kompiliert werden.
|
||||
\item Der Overhead den Compiler zu starten ist relativ hoch. Das liegt zu großen Teilen wahrscheinlich daran, dass der \gls{javac} Compiler in Java implementiert ist und somit die \ac{JVM} gestartet werden muss. Dadurch ist es sehr ineffizient den Compiler für jede Datei neu zu starten.
|
||||
\end{itemize}
|
||||
Die implizite Kompilierung kann beim Aufruf von \gls{javac} durch den Parameter \lstinline|-implicit:none| deaktiviert werden. Dieser sorgt dafür, dass Abhängigkeiten nicht implizit kompiliert werden. In \autoref{tab:compiletimes_javac} sind die Kompilierzeiten des \JTXC{} mit \gls{javac} aufgeführt.
|
||||
|
||||
\begin{table}[h]
|
||||
\centering
|
||||
\begin{tabular}{|l|l|l|l|}
|
||||
\hline
|
||||
& Einzeln & Einzeln (Nicht Implizit) & Gemeinsam \\ \hline
|
||||
Min & 04:52,44 & 02:23,28 & 00:02,50 \\ \hline
|
||||
Max & 05:10,69 & 02:25,78 & 00:02,73 \\ \hline
|
||||
Avg & 04:58,83 & 02:24,15 & 00:02,57 \\ \hline
|
||||
\end{tabular}
|
||||
\caption{Kompilierzeiten des \JTXC{} mit \gls{javac}\footnote{Diese Zeiten wurden mit einem Intel i5-12400F Prozessor und 16GB RAM auf einem Linux Rechner mit dem \ac{GNU} Time Befehl gemessen. Jeder Test wurde 5x durchgeführt. Der Durchschnitt wurde aus allen Durchläufen berechnet.}}
|
||||
\label{tab:compiletimes_javac}
|
||||
\end{table}
|
||||
|
||||
Die erste Spalte beschreibt die Kompilierzeiten, wenn der Compiler für jede Datei einzeln aufgerufen wird und die implizite Kompilierung von Abhängigkeiten aktiviert ist. Die zweite Spalte beschreibt die Kompilierzeiten, wenn der Compiler für jede Datei einzeln aufgerufen wird, aber die Abhängigkeiten nicht implizit kompiliert werden. Es werden also mehrfache Kompilierungen vermieden. Die dritte Spalte beschreibt die Kompilierzeiten, wenn der Compiler für alle Dateien auf einmal aufgerufen wird. Zu sehen ist, dass sich die Kompilierzeit in etwa halbiert, wenn die Abhängigkeiten nicht implizit kompiliert werden. Allerdings ist die letzte Variante, die alle Dateien auf einmal an den Compiler übergibt, immer noch etwa um den Faktor 56 schneller.
|
||||
|
||||
Aus diesem Grund wurde entschieden, dass die Kompilierung des \JTXC{} mit make nicht praktikabel ist.
|
||||
Ein alternativer Ansatz, der dieses Problem umgeht, wird in \autoref{sec:script} vorgestellt.
|
||||
|
||||
\section{Kompilierung mit Bash} \label{sec:script}
|
||||
Aufgrund der Laufzeiteinbusen, die beim Verwenden des Makefiles zustande kommen, musste eine alternative Lösung gefunden werden. Die Idee ist zuerst alle Dateien, die kompiliert werden müssen zu sammeln und dann den Compiler nur einmal aufzurufen. Da sich die Komplexität für solch ein Skript in Grenzen hält und die größtmögliche Flexibilität bietet, wurde sich für ein eigenes Skript entschieden. Als Skriptsprache wurde \ac{Bash} ausgewählt. Diese ist sowohl unter Linux, als auch unter MacOS nativ ohne weitere Abhängigkeiten lauffähig. Zur Ausführung auf Windows müsste man auf das \ac{WSL} zurückgreifen.
|
||||
Das Skript hat das gleiche Verhalten wie das Makefile. Der einzige Unterschied besteht darin, dass alle Dateien die kompiliert werden müssen in eine Liste gespeichert werden und der Compiler am Ende nur einmal aufgerufen wird.
|
||||
Dadurch wird der Overhead des Compilers minimiert und die Kompilierzeit deutlich reduziert, sodass man ohne \ac{Java-TX} Dateien mit dem Skript eine Zeit von etwa 2 Sekunden erreicht, was in etwa der Zeit in \autoref{tab:compiletimes_javac} entspricht. Wenn das Skript mit dem Argument \lstinline|clean| aufgerufen wird, wird der Inhalt des Zielordners gelöscht.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\begin{forest}
|
||||
for tree={
|
||||
font=\ttfamily,
|
||||
grow'=0,
|
||||
child anchor=west,
|
||||
parent anchor=south,
|
||||
anchor=west,
|
||||
calign=first,
|
||||
edge path={
|
||||
\noexpand\path [draw, \forestoption{edge}]
|
||||
(!u.south west) ++(1pt,0) |- (.child anchor)\forestoption{edge label};
|
||||
},
|
||||
before typesetting nodes={
|
||||
if n=1
|
||||
{insert before={[,phantom]}}
|
||||
{}
|
||||
},
|
||||
fit=band,
|
||||
before computing xy={l=15pt},
|
||||
inner sep=2pt,
|
||||
l=15pt,
|
||||
},
|
||||
folder/.style={font=\faFolder\space, edge+={color=blue!50}},
|
||||
folder-open/.style={font=\faFolderOpen\space, edge+={color=blue!50}},
|
||||
file/.style={font=\faFile\space, edge+={color=red!50}},
|
||||
jar/.style={font=\faFileArchive\space, edge+={color=green!50}},
|
||||
markdown/.style={font=\faMarkdown\space, edge+={color=purple!50}},
|
||||
script/.style={font=\faFileCode\space, edge+={color=orange!50}},
|
||||
[JavaTXCompilerInJavaTXNoMaven, folder-open
|
||||
[JavaTXcompiler.jar, jar]
|
||||
[javatx-src, folder]
|
||||
[tests, folder]
|
||||
[out, folder-open
|
||||
[src, folder]
|
||||
[tests, folder]
|
||||
]
|
||||
[lib, folder-open
|
||||
[dependencies, folder]
|
||||
[resources, folder]
|
||||
[classes, folder]
|
||||
]
|
||||
[test.sh, script]
|
||||
[compile.sh, script]
|
||||
[README.md, markdown]
|
||||
]
|
||||
\end{forest}
|
||||
\caption{Dateistruktur des Projekts}
|
||||
\label{fig:folder_structure}
|
||||
\end{figure}
|
||||
|
||||
In \autoref{fig:folder_structure} ist die Ordnerstruktur mit allen notwendigen Ressourcen des Projekts dargestellt. Das Projekt besteht aus folgenden Ordnern und Dateien:
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{JavaTXCompiler.jar}: Die aktuelle Version des \JTXC{} in Form eines JAR-Archivs. Es wird verwendet, um die \ac{Java-TX} Dateien des \JTXCinJTX{} zu kompilieren.
|
||||
\item \textbf{javatx-src}: Enthält den Code des \JTXCinJTX. Besteht zum Großteil aus den Java Quelldateien des \JTXC{} und einigen \ac{Java-TX} Dateien, die bereits migriert werden konnten.
|
||||
\item \textbf{tests}: Enthält die Testsuite des \JTXC{} in Form von \gls{JUnit} Tests (vgl. \autoref{sec:tests}).
|
||||
\item \textbf{out}: Enthält das kompilierte Projekt, sowie die kompilierten Tests.
|
||||
\begin{itemize}
|
||||
\item \textbf{src}: Enthält das kompilierte Projekt in Form von \texttt{.class} Dateien.
|
||||
\item \textbf{test}: Enthält die kompilierten Tests in Form von \texttt{.class} Dateien.
|
||||
\end{itemize}
|
||||
\item \textbf{lib}: Enthält zusätzliche statische Dateien, die für das Projekt benötigt werden.
|
||||
\begin{itemize}
|
||||
\item \textbf{dependencies}: Enthält externe Bibliotheken, die für das Projekt benötigt werden in Form von JAR-Archiven. Werden im \JTXC{} durch \gls{Maven} verwaltet.
|
||||
\item \textbf{resources}: Enthält zusätzliche Ressourcen, die für die Tests benötigt werden. Im Wesentlichen sind dies die Beispielprogramme, die getestet werden.
|
||||
\item \textbf{classes}: Enthält den gesamten \JTXC{} in kompilierter Form um Abhängigkeiten zwischen \texttt{jav} und \texttt{java} Dateien zu ermöglichen (vgl. \autoref{sec:prequisites})
|
||||
\end{itemize}
|
||||
\item \textbf{test.sh}: Dieses Bash Skript ist für die Kompilierung und Ausführung der Tests zuständig.
|
||||
\item \textbf{compile.sh}: Dieses Bash Skript ist für die Kompilierung des Projekts zuständig ist.
|
||||
\item \textbf{README.md}: Eine Markdown Datei, die Informationen zur Verwendung des Projekts enthält.
|
||||
\end{itemize}
|
||||
|
||||
Da das gesamte Skript weder besonders spannend, noch komplex und zusätzlich relativ lang ist, wird es hier nicht im Detail beschrieben. Es ist jedoch im Anhang unter \autoref{app:bash} zu finden.
|
||||
|
||||
\section{Tests} \label{sec:tests}
|
||||
Da es bei der Entwicklung eines eigenen Compilers schnell zu fehlerhaftem Bytecode kommen kann, welcher ggf. erst zur Laufzeit auffällt, ist es sinnvoll den generierten Bytecode zu testen.
|
||||
Der große Vorteil ist an dieser Stelle, dass es bereits eine Testsuite mit über 200 Unittests für den \JTXC{} gibt. Diese Tests müssen lediglich auf den generierten Bytecode des \JTXCinJTX{} angewandt werden, um fehlerhafter Bytecode oft frühzeitig zu erkennen.
|
||||
|
||||
Die Tests des \JTXC{} werden über \gls{Maven} verwaltet und ausgeführt. Außerdem bieten die meisten \ac{IDE}s eine direkte Integration für \gls{JUnit} Tests. Diese automatischen Verfahren sind für reine Java Projekte geeignet, da sie die Testsuite automatisch ausführen und die Ergebnisse anzeigen. Da der \JTXCinJTX{} aus einer gemischten Codebasis mit Java und \ac{Java-TX} Quelldateien besteht, die mit dem eigenen Skript kompiliert wird, ist es nicht möglich diese Tools zu verwenden.
|
||||
|
||||
Daher muss die Testsuite manuell auf die kompilierten Dateien angewandt werden. Um diesen Prozess zu automatisieren wurde ein weiteres Skript geschrieben. Dieses Skript kompiliert und kopiert die notwendigen Dateien zur Ausführung der Tests in den korrekten Ordner. Danach können die Tests mit einem Aufruf des \gls{JUnit} 4 JAR-Archivs ausgeführt werden.
|
||||
Das gesamte Skript ist in \autoref{lst:testscript} zu sehen.
|
||||
|
||||
\begin{lstlisting}[caption={Skript zum Kompilieren und Ausführen der Tests}, label={lst:testscript}, language=bash]
|
||||
#!/bin/bash
|
||||
##TEST ENVIRONMENT##
|
||||
|
||||
DESTDIR="out/src"
|
||||
TESTDESTDIR="out/tests"
|
||||
DEPENDENCIES="dependencies/*"
|
||||
TESTFILES="TestComplete TestPackages GenericParserTest TestTypeDeployment finiteClosure.SuperInterfacesTest astfactory.ASTFactoryTest targetast.ASTToTypedTargetAST targetast.GreaterEqualTest targetast.GreaterThanTest targetast.InheritTest2 targetast.InheritTest targetast.LessEqualTest targetast.LessThanTest targetast.OLTest targetast.PostIncTest targetast.PreIncTest targetast.PutTest targetast.TestCodegen targetast.TestGenerics targetast.TphTest targetast.WhileTest"
|
||||
RESOURCES="lib/resources"
|
||||
|
||||
#recompile all necessary test files
|
||||
javac -cp "$TESTDESTDIR:$DESTDIR:$DEPENDENCIES" -d $TESTDESTDIR tests/**/*.java
|
||||
javac -cp "$TESTDESTDIR:$DESTDIR:$DEPENDENCIES" -d $TESTDESTDIR tests/*.java
|
||||
|
||||
cp -r $RESOURCES $TESTDESTDIR/resources/
|
||||
|
||||
cd "$TESTDESTDIR"
|
||||
|
||||
#run tests with junit
|
||||
java -cp "../src:.:../../dependencies/*" org.junit.runner.JUnitCore $TESTFILES
|
||||
\end{lstlisting}
|
||||
|
||||
Zu Beginn werden einige Variablen initialisiert. \texttt{DESTDIR} gibt den Ordner an, an dem die bereits kompilierten Dateien des \JTXCinJTX{} liegen. Auf diesen Dateien werden die Tests ausgeführt. \texttt{TESTDESTDIR} gibt den Ordner an, in dem die kompilierten \gls{JUnit} Testdateien abgelegt werden sollen. \texttt{DEPENDENCIES} gibt den Ordner mit den externen Abhängigkeiten des Projekts an. Diese sind identisch zu den Abhängigkeiten des \texttt{compile.sh} Skripts und damit die Dateien, die im ursprünglichen Compiler über \gls{Maven} verwaltet werden. \texttt{TESTFILES} gibt die Testklassen an, die ausgeführt werden sollen. Zuletzt verweist \texttt{RESOURCES} auf den Ordner, in dem die Testdateien, d.h. \texttt{.jav} Quelldateien, die von den Tests kompiliert werden, liegen.
|
||||
Dann werden alle \gls{JUnit} Test Dateien kompiliert, wenn sie nicht bereits vorhanden sind. Im Anschluss werden sämtliche Ressourcen, die von den Tests benötigt werden, z.B. die Testdateien, deren Code kompiliert werden soll, an die korrekte Position kopiert, sodass die Tests diese zur Laufzeit finden können. In den nächsten Zeilen wird in den Testordner gewechselt und die Tests mit der Klasse \texttt{JUnitCore} ausgeführt. Die Klasse \texttt{org.juni.runner.JUnitCore} ist die Hauptklasse von \gls{JUnit} 4, die die Tests ausführt. Sie ist im \gls{JUnit}4 JAR-Archiv enthalten, welches bereits bei den Abhängigkeiten in \texttt{DEPENDENCIES} vorhanden ist.
|
450
Studienarbeit/content/chapter/03.tex
Normal file
450
Studienarbeit/content/chapter/03.tex
Normal file
@ -0,0 +1,450 @@
|
||||
%!TEX root = ../../main.tex
|
||||
|
||||
\chapter{Aufgetretene Probleme}
|
||||
Beim Versuch, im Zuge dieser Studienarbeit Teile des \JTXC{} in \ac{Java-TX} zu konvertieren, sind viele Bugs und fehlende Features aufgefallen. Einige interessante Probleme werden in diesem Kapitel genauer beschrieben. In \autoref{fig:problems_plot} ist eine Gesamtübersicht über die Anzahl der gefundenen Probleme zu sehen. Die Grafik ist in zwei Kategorien unterteilt: Bugs und Feature Anfragen. Bugs beschreiben hierbei Fehler in bereits implementierten Funktionen, während Feature Anfragen gänzlich neue Funktionen beschreiben, meistens handelt es sich hierbei um Standard Java Funktionen, die bislang noch nicht implementiert wurden und keine neuen Funktionen im Bezug auf \ac{Java-TX} Sprachfeatures. Weiter sind die Kategorien nach offenen und geschlossenen Problemen unterteilt.
|
||||
|
||||
\begin{figure}[H]
|
||||
\begin{tikzpicture}
|
||||
\begin{axis}[
|
||||
ybar,
|
||||
enlargelimits=0.15,
|
||||
legend style={at={(0.5,-0.1)},
|
||||
anchor=north,
|
||||
legend columns=-1},
|
||||
ylabel={Anzahl},
|
||||
symbolic x
|
||||
coords={offen,geschlossen},
|
||||
xtick=data,
|
||||
nodes near coords,
|
||||
nodes near coords align={vertical},
|
||||
width=\textwidth,
|
||||
height=10cm,
|
||||
bar width=2cm,
|
||||
enlarge x limits=0.25
|
||||
]
|
||||
\addplot[fill=red!50] coordinates {(offen,8) (geschlossen,27) };
|
||||
\addplot[fill=blue!50] coordinates {(offen,1) (geschlossen,20) };
|
||||
\legend{Bugs,Feature Anfragen}
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
\caption{Gefundene Probleme und neue Funktionen}
|
||||
\label{fig:problems_plot}
|
||||
\end{figure}
|
||||
|
||||
\section{Neue Funktionen}
|
||||
Um den \JTXCinJTX{} umzuschreiben sind einige Funktionen notwendig, die zu Beginn der Studienarbeit noch nicht implementiert waren. Über den Zeitraum der Studienarbeit wurden insgesamt 20 neue Funktionen implementiert. Da die For-Each Schleife in \ac{Java-TX} minimal von der Java Syntax abweichen darf, wird sie im folgenden etwas ausführlicher beschrieben. Einige der anderen Funktionen werden nur kurz aufgezählt.
|
||||
|
||||
\subsection{For\-Each Schleife}
|
||||
Die For-Each Schleife, ermöglicht es mit einer eleganten Syntax über eine Variable vom Typ \lstinline|java.lang.Iterable| zu iterieren \cite{noauthor_for-each_nodate}. Ein Beispiel zur Verwendung der For-Each Schleife in Java ist in \autoref{lst:for_each_java} zu sehen.
|
||||
|
||||
\begin{lstlisting}[language=java, caption={For-Each Schleife in Java}, label={lst:for_each_java}]
|
||||
List<String> list = new ArrayList<>();
|
||||
//entweder
|
||||
for (String s : list) {
|
||||
System.out.println(s);
|
||||
}
|
||||
// ... oder
|
||||
for(var s : list) {
|
||||
System.out.println(s);
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
Dabei kann der Typ der Variable entweder explizit angegeben, oder durch Angabe des Schlüsselwort \texttt{var} durch den Compiler inferiert werden. In Java-TX kann diese Typangabe Angabe auch gänzlich weggelassen werden.
|
||||
Ein Beispiel zur Verwendung der For-Each Schleife in \ac{Java-TX} ist in \autoref{lst:for_each_javatx} zu sehen.
|
||||
|
||||
\begin{lstlisting}[language=java, caption={For-Each Schleife in Java-TX}, label={lst:for_each_javatx}]
|
||||
List<String> list = new ArrayList<>();
|
||||
//Kein Typ vor der Variable s notwendig
|
||||
for (s : list) {
|
||||
System.out.println(s);
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
\subsection{Weitere neue Funktionen}
|
||||
Neben der For-Each Schleife wurden noch weitere Funktionen implementiert. Diese unterscheiden sich allerdings nicht von der Java Syntax und werden daher nur kurz aufgelistet:
|
||||
|
||||
\begin{itemize}
|
||||
\item super() Konstruktoraufruf
|
||||
\item Methodenaufruf der Superklasse mittels super
|
||||
\item this() Konstruktoraufruf
|
||||
\item instanceof Schlüsselwort
|
||||
\item throw Schlüsselwort
|
||||
\item Verwendung des \lstinline|null| Literals
|
||||
\item \lstinline|Character| Literal z.B. \lstinline|'a'|
|
||||
\item \lstinline|Long| und \lstinline|Float| Literals z.B. \lstinline|1L| oder \lstinline|1.0f|
|
||||
\item Type Casts
|
||||
\item Negation Operator \lstinline|!|
|
||||
\item Bitweise AND \lstinline|&| und OR \lstinline{|} Operatoren
|
||||
\item Modulo Operator \lstinline|%|
|
||||
\item Ternary Operator \lstinline|? :|
|
||||
\item Do-While Schleife
|
||||
\item Verwenden von JAR-Archiven im Classpath
|
||||
\end{itemize}
|
||||
|
||||
\section{Bugs}
|
||||
Insgesamt wurden 27 Bugs gefunden und behoben, einige weitere sind noch offen. Im folgenden Abschnitt wird eine kleine Auswahl dieser Bugs ausführlicher beschrieben.
|
||||
|
||||
\subsection{JVM Classpath wird von \JTXC{} beachtet}
|
||||
Zur Beschreibung dieses Bugs müssen zunächst einige Grundlagen zum Classpath und dem Classloader geklärt werden. Damit der \JTXC{} andere Klassen verwenden kann (darunter zählen z.B. auch JAR-Archive), müssen sie im Classpath vorhanden oder Teil der Standardbibliothek sein. Der Classpath kann, wie auch beim \gls{javac} Compiler, mit dem Flag \lstinline|-cp| oder \lstinline|-classpath| angegeben werden. Ein Beispielaufruf könnte folgendermaßen aussehen: \lstinline|java -jar JavaTXCompiler.jar -cp /path/to/classes /path/to/source.jav|\footnote{JavaTXCompiler.jar ist in diesem Fall der \JTXC{} in Form eines JAR-Archivs}. Wenn kein Classpath angegeben wird, wird das aktuelle Arbeitsverzeichnis des Nutzers verwendet. Die angegebenen Pfade werden dann vom Compiler durchsucht, um die benötigten Klassen zu finden. Wenn die Klasse nicht gefunden werden konnte, wird ein Fehler ausgegeben. Nur Klassen, die im Classpath vorhanden sind, können importiert und verwendet werden. Ausnahme sind die Klassen aus der Java Standard Library, wie z.B. alle Klassen des Pakets \lstinline|java.lang|, die standardmäßig vorhanden sind.
|
||||
Das Packet \lstinline|java.lang| bietet die Klasse \lstinline|ClassLoader|, die es ermöglicht, Klassen dynamisch in die \ac{JVM} zu laden \cite{baeldung_class_2024}.
|
||||
Der \JTXC{} verwendet auch diesen Classloader, um die angegebenen Klassen zu suchen und einzulesen. So muss kein eigener Parser für Java Bytecode implementiert werden.
|
||||
|
||||
Um genau zu sein gibt es nicht einen Classloader, sondern mehrere, die nacheinander ausgeführt werden. Die oberste Schicht ist der Bootstrap Classloader, der \ac{JDK} interne Klassen lädt. Darunter befindet sich der Extension Classloader, der die Klassen aus den JAR-Dateien im \lstinline|jre/lib/ext| Verzeichnis lädt. Der Application Classloader lädt die Klassen aus dem Classpath und zuletzt gibt es eine eigene Implementierung des \lstinline|java.net.URLClassLoader| namens Directory Classloader, der die Pfade, die dem Compiler mit \lstinline|-cp| übergeben werden, durchsucht \cite{baeldung_class_2024, nero_all_2023}. Eine Visualisierung dieser Schichten ist in \autoref{fig:classloader} zu sehen. Das Programm beginnt mit dem untersten Classloader (Directory Classloader), versucht also die gesuchte Klasse in diesen Ressourcen zu finden. Wenn die Klasse nicht gefunden wird, wird der nächste Classloader (Application Classloader) verwendet. Dieser Prozess wird so lange wiederholt, bis die Klasse gefunden wird oder alle Classloader durchsucht wurden. Zu beachten ist, dass der Classpath des Application Classloaders nicht derselbe ist, wie der Classpath, der dem Compiler übergeben wird und vom DirectoryClassloader verwendet wird. Der Classpath des Application Classloaders ist der Classpath, mit dem die \ac{JVM} gestartet wurde. Dieser beinhaltet in diesem Fall z.B. sämtliche \gls{Maven} Abhängigkeiten und Bytecode Dateien des \JTXC{}.
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\begin{tikzpicture}
|
||||
|
||||
% Define the styles for the nodes and arrows
|
||||
\tikzstyle{rect} = [rectangle, draw, text width=13cm, align=center, minimum height=1.5cm, inner sep=3pt]
|
||||
\tikzstyle{header} = [font=\large, anchor=north]
|
||||
\tikzstyle{content} = [font=\footnotesize, anchor=north]
|
||||
\tikzstyle{arrow} = [->, thick]
|
||||
|
||||
% Define the coordinates for the nodes
|
||||
\node[rect] (rect1) at (0,0) {
|
||||
\begin{tabular}{c}
|
||||
\textbf{Bootstrap Classloader} \\
|
||||
\footnotesize{Interne \ac{JDK} Klassen, Standard Library}
|
||||
\end{tabular}
|
||||
};
|
||||
\node[rect] (rect2) at (0, -2.5) {
|
||||
\begin{tabular}{c}
|
||||
\textbf{Extension Classloader} \\
|
||||
\footnotesize{\ac{JDK} Erweitungen, überlicherweise im \lstinline|$JAVA_HOME/lib/ext| Verzeichnis}
|
||||
\end{tabular}
|
||||
};
|
||||
\node[rect] (rect3) at (0, -5) {
|
||||
\begin{tabular}{c}
|
||||
\textbf{Application Classloader} \\
|
||||
\footnotesize{Klassen aus dem Classpath}
|
||||
\end{tabular}
|
||||
};
|
||||
\node[rect] (rect4) at (0, -7.5) {
|
||||
\begin{tabular}{c}
|
||||
\textbf{Directory Classloader} \\
|
||||
\footnotesize{Klassen, die dem Compiler mit -cp übergeben werden}
|
||||
\end{tabular}
|
||||
};
|
||||
|
||||
% Draw the arrows connecting the rectangles
|
||||
\draw[arrow] (rect2.north) -- (rect1.south);
|
||||
\draw[arrow] (rect3.north) -- (rect2.south);
|
||||
\draw[arrow] (rect4.north) -- (rect3.south);
|
||||
|
||||
\end{tikzpicture}
|
||||
\caption{Die Classloader Hierarchie des \JTXC{} (vgl. \cite{nero_all_2023})}
|
||||
\label{fig:classloader}
|
||||
\end{figure}
|
||||
|
||||
Da durch dieses Vorgehen auch die Klassen aus dem \ac{JVM} Classpath vom Classloader und damit vom \JTXC{} berücksichtigt werden, kann man diese importieren, ohne sie im Classpath angegeben zu müssen. Dies ist ein unerwünschtes Verhalten, da der Compiler so Klassen akzeptiert, die gegebenenfalls nicht vom Programmierer gewünscht sind, was zu Verwirrung führen kann. Ein Beispiel hierzu ist in \autoref{lst:jvm_classpath} zu sehen. Dieser Code kompiliert mit dem Befehl \lstinline|java -jar JavaTXCompiler.jar Main.jav|\footnote{JavaTXCompiler.jar ist hier der \JTXC{} in Form eines JAR Archivs} korrekt, obwohl die Klasse \texttt{com.google.common.math.IntMath} weder im Classpath angegeben ist, noch in der Standardbibliothek vorhanden ist. Sie ist jedoch im JAR Archiv des \JTXC{} und damit im \ac{JVM} Classpath zur Ausführung des Compilers vorhanden, da der \JTXC{} die Google Guava Bibliothek verwendet.
|
||||
|
||||
\begin{lstlisting}[language=java, caption={Verwenden von Klassen im JVM Classpath}, label={lst:jvm_classpath}]
|
||||
import com.google.common.math.IntMath;
|
||||
import java.lang.String;
|
||||
|
||||
class Main{
|
||||
return2(){
|
||||
return IntMath.checkedAdd(1, 1);
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
Dieses Verhalten ist vor allem auch für das Projekt \JTXCinJTX{} problematisch, da der \JTXC{} und der \JTXCinJTX{} die gleichen Klassen/Klassenhierarchie verwenden und somit die Möglichkeit besteht, dass der Compiler die Klassen des \JTXC{} verwendet, anstatt die des \JTXCinJTX.
|
||||
|
||||
Die Lösung dieses Problems ist glücklicherweise unkompliziert. Es muss lediglich die ClassLoader Hierarchie so angepasst werden, dass der Application Classloader übersprungen wird. Diese Änderung ist in \autoref{fig:classloader_no_application} zu sehen. Der Directory Classloader ruft nun direkt den Extension Classloader auf. So können weiterhin Klassen aus der Java Standard Bibliothek verwendet werden, jedoch nicht mehr die Klassen im \ac{JVM} Classpath.
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\begin{tikzpicture}
|
||||
|
||||
% Define the styles for the nodes and arrows
|
||||
\tikzstyle{rect} = [rectangle, draw, text width=13cm, align=center, minimum height=2cm, inner sep=5pt]
|
||||
\tikzstyle{header} = [font=\large, anchor=north]
|
||||
\tikzstyle{content} = [font=\footnotesize, anchor=north]
|
||||
\tikzstyle{arrow} = [->, thick]
|
||||
|
||||
% Define the coordinates for the nodes
|
||||
\node[rect] (rect1) at (0,0) {
|
||||
\begin{tabular}{c}
|
||||
\textbf{Bootstrap Classloader} \\
|
||||
\footnotesize{Interne \ac{JDK} Klassen, Standard Library}
|
||||
\end{tabular}
|
||||
};
|
||||
\node[rect] (rect2) at (0, -2.5) {
|
||||
\begin{tabular}{c}
|
||||
\textbf{Extension Classloader} \\
|
||||
\footnotesize{\ac{JDK} Erweitungen, überlicherweise im \lstinline|$JAVA_HOME/lib/ext| Verzeichnis}
|
||||
\end{tabular}
|
||||
};
|
||||
\node[rect, fill=gray!30] (rect3) at (0, -5) {
|
||||
\begin{tabular}{c}
|
||||
\textbf{Application Classloader} \\
|
||||
\footnotesize{Klassen aus dem Classpath}
|
||||
\end{tabular}
|
||||
};
|
||||
\node[rect] (rect4) at (0, -7.5) {
|
||||
\begin{tabular}{c}
|
||||
\textbf{Directory Classloader} \\
|
||||
\footnotesize{Klassen, die dem Compiler mit -cp übergeben werden}
|
||||
\end{tabular}
|
||||
};
|
||||
|
||||
% Draw the arrows connecting the rectangles
|
||||
\draw[arrow] (rect2.north) -- (rect1.south);
|
||||
\draw[arrow] (rect4.east) to ++(1,0) to ++(0, 5) to (rect2.east);
|
||||
\end{tikzpicture}
|
||||
\caption{Die Classloader Hierarchie des \JTXC{} ohne den ApplicationClassLoader}
|
||||
\label{fig:classloader_no_application}
|
||||
\end{figure}
|
||||
|
||||
\subsection{Kompatibilität von Java-TX Funktionstypen und funktionalen Interfaces}
|
||||
Das Problem beschreibt die Kompatibilität von \ac{Java-TX} Funktionstypen und funktionalen Interfaces, die seit Java 8 als Zieltypen für Lambda Ausdrücken dienen (vgl. \autoref{sec:lambda}). Ziel ist es, bestehende Java Bibliotheken, die mit funktionalen Interfaces arbeiten, mit Java-TX Funktionstypen verwenden zu können.
|
||||
Die theoretische Lösung für dieses Problem wurde bereits 2017 in \cite{plumicke_introducing_2017}[Abschnitt 6] beschrieben. Die praktische Umsetzung gestaltet sich jedoch komplizierter als gedacht.
|
||||
Ein Beispiel für eine Bibliothek, die ausgiebig funktionale Interfaces verwendet ist die sehr verbreitete Stream API, welche mit Java 8 eingeführt wurde \cite{baeldung_java_2016}. Streams erlauben es Daten mit deklarativem Code zu verarbeiten, was die Lesbarkeit und Wartbarkeit des Codes erhöht \cite{softwarealchemy_streamline_2024}.
|
||||
|
||||
\begin{lstlisting}[language=java, caption={Verwendung der Stream API in Java}, label={lst:java_functional_interface}]
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class ListUtils{
|
||||
static List<Integer> getAllEvenNumbers(List<Integer> list){
|
||||
List<Integer> result = list.stream().filter(x -> x % 2 == 0).toList();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
In \autoref{lst:java_functional_interface} ist ein Beispielprogramm in Java zu sehen, welches die Stream API verwendet. Die Methode \texttt{getAllEvenNumbers} filtert alle ungeraden Zahlen aus einer Liste.
|
||||
Dazu verwendet sie die Lambda Funktion \lstinline{x -> x % 2 == 0}, die folgendermaßen definiert ist:
|
||||
|
||||
\[
|
||||
\text{isEven}(n)\footnote{Im Quellcode hat der Lambda Ausdruck keinen Namen} =
|
||||
\begin{cases}
|
||||
true, & \text{wenn } n \mod 2 = 0 \\
|
||||
false, & \text{sonst}
|
||||
\end{cases}
|
||||
\]
|
||||
|
||||
Die \texttt{filter} Methode von \texttt{java.util.stream.Stream} lässt nur Werte passieren, für die die angegebene Funktion zu \glqq{}true\grqq{} evaluiert. Zuletzt werden diese Werte in einer Liste gesammelt und zurückgegeben.
|
||||
|
||||
Der \gls{javac} Compiler inferiert für den Lambda Ausdruck \lstinline|x -> x % 2 == 0| den Typ \\
|
||||
\texttt{java.util.function.Predicate<Integer>}, da explizit dieser Typ von der \texttt{filter} Methode erwartet wird.
|
||||
|
||||
\begin{verbatim}
|
||||
public interface Stream<T> extends BaseStream<T, Stream<T>> {
|
||||
Stream<T> filter(Predicate<? super T> predicate);
|
||||
...
|
||||
}
|
||||
\end{verbatim}
|
||||
|
||||
In \ac{Java-TX} kompilierte dieser Code zu Beginn der Studienarbeit nicht, da der \JTXC{} den Typ \lstinline|Fun1$$<Integer, Boolean>| für den Lambda Ausdruck inferiert hat. Der \JTXC{} würde also den Lambda Ausdruck als Funktionstypen interpretieren, anstatt als funktionalen Interface, was soweit ja korrekt ist.
|
||||
Obwohl die beiden Typen semantisch äquivalent sind, sind sie auf Grund des nominalen Typsystems von Java und der \ac{JVM} jedoch nicht austauschbar. Es kommt also zu einem Laufzeitfehler.
|
||||
Dieses Problem ist von hoher Relevanz, da sämtliche Methoden aus Java Bibliotheken, die funktionalen Interfaces verwenden, so in \ac{Java-TX} nicht verwendet werden können.
|
||||
|
||||
Im Laufe der Arbeit wurde zumindest eine Teillösung dieses Problems implementiert, sodass der Code in \autoref{lst:java_functional_interface} kompiliert und lauffähig ist. Der \JTXC{} generiert in solch einem Fall nun den Code für das korrekte funktionale Interface statt dem \texttt{FunN\$\$} Typen. Das funktioniert allerdings nur, wenn der Lambda Ausdruck wie bei \autoref{lst:java_functional_interface} direkt im Funktionsaufruf steht.
|
||||
Der Beispielcode in \autoref{lst:javatx_not_working_1} funktioniert also nicht und stellt aktuell noch ein Problem dar.
|
||||
|
||||
\begin{lstlisting}[language=java, caption={Aktuell nicht lauffähiger \ac{Java-TX} Code I}, label={lst:javatx_not_working_1}]
|
||||
import java.util.List;
|
||||
import java.lang.Integer;
|
||||
import java.lang.Boolean;
|
||||
import java.util.stream.Stream;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class ListUtils{
|
||||
static getAllEvenNumbers(list){
|
||||
// Java-TX inferiert hier Fun1$$<Integer, Boolean>
|
||||
var func = x -> x % 2 == 0;
|
||||
// An dieser Stelle wird aber ein Predicate<Integer> erwartet -> Laufzeitfehler
|
||||
var result = list.stream().filter(func).toList();
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
Das liegt daran, dass der Compiler zum Zeitpunkt der Initialisierung des Lambda Ausdrucks nicht weiß, in welchem Kontext der Ausdruck später verwendet werden soll. Betrachten wir zur Verdeutlichung des Problems die etwas komplexere Funktion \lstinline|uselessFunction| in \autoref{lst:javatx_not_working_2}.
|
||||
Über die Sinnhaftigkeit dieses Codes lässt sich streiten. Die Funktion sollte im Entdefekt das gleiche Resultat wie die Funktion in \autoref{lst:java_functional_interface}, mit dem Unterschied das in der Resultatliste für jede Zahl der Wert \lstinline|true| zurückgegeben wird, liefern.
|
||||
Das Problem ist nun, dass die selbe Lambda Funktion im Laufe der Funktion mit verschiedenen funktionalen Interfaces verwendet wird, was die Sache verkompliziert. So würde die \lstinline|map| Methode in Zeile 10 den Typ \lstinline|Function<Integer, Boolean>| erwarten, während die Filter Methode in Zeile 9 weiterhin \lstinline|Predicate<Integer>| erwartet.
|
||||
Hier müsste vermutlich für alle Aufrufe eine separate Lambda Funktion mit dem richtigen Target Type im Bytecode erstellt werden. Allerdings erfordert dies vermutlich eine größere Änderung am Compiler und konnte aktuell noch nicht umgesetzt werden.
|
||||
|
||||
\begin{lstlisting}[language=java, caption={Aktuell nicht lauffähiger \ac{Java-TX} Code II}, label={lst:javatx_not_working_2}]
|
||||
import java.util.List;
|
||||
import java.lang.Integer;
|
||||
import java.lang.Boolean;
|
||||
import java.util.stream.Stream;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class ListUtils{
|
||||
static uselessFunction(list){
|
||||
// Java-TX inferiert hier Fun1$$<Integer, Boolean>
|
||||
var func = x -> x % 2 == 0;
|
||||
// An dieser Stelle wird ein Predicate<Integer> erwartet
|
||||
var result1 = list.stream().filter(func);
|
||||
// An dieser Stelle wird ein Function<Integer, Boolean> erwartet
|
||||
var result2 = result1.map(func).toList();
|
||||
return result2;
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
\subsection{Überschreiben von Methoden mit primitiven Datentypen}
|
||||
Ein weiteres Problem, ist das Überschreiben von Methoden mit primitiven Datentypen.
|
||||
Im Vergleich zu Java unterstützt \ac{Java-TX} nur Referenztypen, keine primitiven Datentypen. Die Grammatik erlaubt zwar die Verwendung von primitiven Datentypen, diese werden jedoch intern in Referenztypen umgewandelt. In \autoref{fig:primitive_types_javatx} sind auf der linken Seite einige Initialisierungen von primitiven Datentypen in \ac{Java-TX} gezeigt. Auf der rechten Seite gegenübergestellt ist der Code, wie er im Compiler intern verarbeitet und später auch im Bytecode generiert wird. Der Compiler generiert also für jeden primitiven Datentypen den entsprechenden Wrappertyp. Daher ist es auch bei der Verwendung von primitiven Typen notwendig die entsprechenden Wrapperklasse zu importieren.
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\begin{minipage}[t]{0.45\textwidth}
|
||||
\centering
|
||||
\begin{lstlisting}
|
||||
import java.lang.Integer;
|
||||
import java.lang.Boolean;
|
||||
import java.lang.Float;
|
||||
class PrimitiveTypes{
|
||||
int i = 5;
|
||||
boolean b = true;
|
||||
float f = 10.5f;
|
||||
}
|
||||
\end{lstlisting}
|
||||
\end{minipage}%
|
||||
\hfill\vrule\hfill
|
||||
\begin{minipage}[t]{0.45\textwidth}
|
||||
\centering
|
||||
\begin{lstlisting}
|
||||
import java.lang.Integer;
|
||||
import java.lang.Boolean;
|
||||
import java.lang.Float;
|
||||
class PrimitiveTypes{
|
||||
Integer i = 5;
|
||||
Boolean b = true;
|
||||
Float f = 10.5f;
|
||||
}
|
||||
\end{lstlisting}
|
||||
\end{minipage}%
|
||||
\caption{Primitive Datentypen in Java-TX}
|
||||
\label{fig:primitive_types_javatx}
|
||||
\end{figure}
|
||||
|
||||
Diese Eigenschaft von \ac{Java-TX} führte im Zusammenhang mit der Überladung von Java Methoden, deren Rückgabewert oder Parameter primitive Datentypen sind, zu einem Problem. Nehmen wir als Beispiel den Code in \autoref{lst:primitive_types}. Die Methode \texttt{hashCode} wird von der Mutterklasse \texttt{Object}\footnote{In Java erben alle Klassen implizit von Object} geerbt.
|
||||
Sie hat folgende Signatur:
|
||||
\begin{verbatim}
|
||||
int hashCode();
|
||||
\end{verbatim}
|
||||
Da sowohl der Name, als auch die Parameterliste der Methode übereinstimmt, würde man erwarten, dass diese von der Klasse \texttt{Foo} überschrieben wird.
|
||||
|
||||
\begin{lstlisting}[language=java, caption={Überschreiben von Methoden mit primitiven Datentypen in Java-TX}, label={lst:primitive_types}]
|
||||
import java.lang.Integer;
|
||||
|
||||
public class Foo{
|
||||
public hashCode(){
|
||||
return 42;
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
Stattdessen inferiert der Compiler allerdings die Typen in \autoref{lst:primitive_types_infer} für die Methode \texttt{hashCode} in \autoref{lst:primitive_types}. Dies ist Aufgrund der Tatsache, dass primitive Datentypen in \ac{Java-TX} automatisch mit dem Wrappertyp ersetzt werden, logisch.
|
||||
|
||||
\begin{lstlisting}[language=java, caption={Ergebnis der Typinferenz für die Methode \texttt{hashCode} in Java-TX}, label={lst:primitive_types_infer}]
|
||||
import java.lang.Integer;
|
||||
|
||||
public class Foo{
|
||||
public java.lang.Integer hashCode(){
|
||||
return 42;
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
Im Bytecode führt dies allerdings anstatt einer Überschreibung zu einer Überladung der Methode \lstinline|hashCode|, da der Rückgabetyp in \autoref{lst:primitive_types_infer} nicht mit dem Rückgabetyp in \autoref{lst:primitive_types} übereinstimmt, schließlich sind \texttt{int} und \texttt{java.lang.Integer} trotz Autoboxing unterschiedliche Typen (mehr dazu in \cite{naftalin_java_2007}[S.6 ff]).
|
||||
Denn obwohl Java die Überladung von Methoden anhand des Rückgabetyps nicht unterstützt, ist es in Java Bytecode durchaus möglich. Dies macht sich Java z.B. für das kovariante Überladen von Methoden zunutze. Seit Java 5 ist es möglich, dass eine Methode in einer Subklasse einen Rückgabetyp hat, der ein Subtyp des Rückgabetyps der Methode in der Superklasse ist \cite{naftalin_java_2007}[S. 49]. Dazu sei zunächst die Signatur der Methode \lstinline|clone| in der Klasse \lstinline|Object| gegeben, welche kein Parameter hat und ein Objekt vom Typ \lstinline|Object| zurückgibt:
|
||||
\begin{verbatim}
|
||||
class Object{
|
||||
...
|
||||
protected Object clone(){...}
|
||||
}
|
||||
\end{verbatim}
|
||||
|
||||
Es ist nun möglich, die Methode \lstinline|clone| in einer Subklasse zu überschreiben und den Rückgabetyp zu spezialisieren. In \autoref{lst:covariant_overloading} wird die Methode \lstinline|clone| in der Klasse \lstinline|A| überschrieben und der Rückgabetyp auf \lstinline|A| spezialisiert.
|
||||
|
||||
\begin{lstlisting}[language=java, caption={Kovariante Methodenüberladung in Java}, label={lst:covariant_overloading}]
|
||||
class A{
|
||||
...
|
||||
@Override
|
||||
public A clone(){...}
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
Dies wird durch eine Bridge Methode ermöglicht, die sich den Fakt zunutze macht, dass die JVM Methoden anhand des Rückgabetyps unterscheidet und somit überladen kann. Der Compiler erzeugt also eine Bridge Methode, mit der Signatur \lstinline|Object clone()|, die die Methode \lstinline|A clone()| aufruft. In \autoref{lst:covariant_overloading_bytecode} ist dazu der dekompilierte Bytecode der Klasse \lstinline|A| gegeben.
|
||||
\newpage
|
||||
\begin{lstlisting}[language=java, caption={Dekompilierter Bytecode der Klasse A}, label={lst:covariant_overloading_bytecode}]
|
||||
class A{
|
||||
...
|
||||
public A clone(){...}
|
||||
|
||||
public Object clone(){
|
||||
return this.clone(); //Aufruf der Methode clone():A
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
|
||||
In unserem Bug ist dies dies allerdings nicht das gewünschte Verhalten, da eine Überladung anhand des Rückgabewerts nicht möglich sein sollte. In Java werden Überladungen anhand des Rückgabewerts vom Compiler abgelehnt, da nicht immer ersichtlich ist, welche Methode aufgerufen werden soll. Außerdem wären Überladungen von Methoden welche primitive Typen verwenden in \ac{Java-TX} gänzlich unmöglich, weil selbst die explizite Angabe des Typs \lstinline|int| vom Compiler in \lstinline|java.lang.Integer| umgewandelt werden würde.
|
||||
|
||||
Um dieses Problem zu lösen wird aktuell eine einfache Substitution verwendet. Wenn der Compiler eine Überladung erkennt und der Rückgabetyp oder ein Parametertyp der Superklasse ein primitiver Datentyp ist, wird der dazugehörige Wrappertyp durch den jeweiligen primitiven Typen ersetzt. Dadurch funktioniert die Überschreibung von Methoden mit primitiven Datentypen korrekt. Da es aber noch einige Bugs mit dieser Implementierung gibt, bleibt abzuwarten, ob dies die endgültige Lösung ist.
|
||||
|
||||
\subsection{Korrekter Methodenaufruf für überladene Methoden mit Subtypen als Parameter}
|
||||
Dieser Bug ist zum Zeitpunkt der Abgabe dieser Arbeit noch nicht behoben. Er tritt vor allem im Zusammenhang mit dem Visitor-Pattern auf, welches im \JTXC{} ausgiebig benutzt wird. Der Compiler ruft nicht immer die korrekte Methode auf, wenn mehrere potenziell korrekte Methoden zur Auswahl stehen. Sehen wir uns dazu an, wie Java mit diesem Problem umgeht. Dazu sei der Code in \autoref{lst:overloaded_methods} gegeben. Die Main Funktion ruft dabei die Methode \lstinline|visit| der Klasse \lstinline|Visitor| mit einer Instanz der Klasse \lstinline|java.lang.Integer| (bzw. int, was aber geboxed wird \cite{naftalin_java_2007}[S.6 ff]) auf. Die \lstinline|visit| Methode ist dreimal überladen, einmal mit \lstinline|java.lang.Object|, einmal mit \lstinline|java.lang.Number| und einmal mit einem \lstinline|java.lang.Integer|.
|
||||
Die Frage ist nun, welche dieser Überladungen aufgerufen werden sollte.
|
||||
Theoretisch wäre jeder Aufruf korrekt, da \lstinline|java.lang.Integer| sowohl von \lstinline|java.lang.Number| als auch von \lstinline|java.lang.Object| erbt. Das Verhalten in so einem Fall ist in \cite{gosling_java_2005}[Abschnitt 15.12.2.5] beschrieben. Java wählt in einem solchen Fall die spezifischste Methode, also die Methode, die den spezifischsten Typen als Parameter hat. In diesem Fall wäre das die Methode, mit der Signatur \lstinline|void visit(Integer i)|.
|
||||
Dies bestätigt sich auch, wenn der Code in \autoref{lst:overloaded_methods} kompiliert und ausgeführt wird. Die Ausgabe ist wie erwartet \lstinline|"Integer"|.
|
||||
|
||||
\begin{lstlisting}[language=java, caption={Überladene Methoden in Java}, label={lst:overloaded_methods}]
|
||||
class Main{
|
||||
public static void main(String[] args){
|
||||
Visitor v = new Visitor();
|
||||
v.visit(1);
|
||||
}
|
||||
}
|
||||
|
||||
class Visitor{
|
||||
public void visit(Object o){
|
||||
System.out.println("Object");
|
||||
}
|
||||
public void visit(Number n){
|
||||
System.out.println("Number");
|
||||
}
|
||||
public void visit(Integer i){
|
||||
System.out.println("Integer");
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
Dieses Verhalten wäre vor allem aus Kompatibilitätsgründen auch in \ac{Java-TX} wünschenswert. Hier kommt es aktuell aber zu einem Fehler. Wenn der Code mehrmals kompiliert wird, wählt der Compiler jedes Mal eine andere Methode. Die Ausgabe ist also nicht deterministisch. Dies ist dadurch zu ergründen, dass der Typinferenzalgorithmus alle 3 Lösungen für den Methodenaufruf findet, aktuell aber nicht berücksichtigt, dass die Parameter der Methoden Subtypen sein können. Die Lösungen werden also als gleichwertig angesehen. Der Bytecodegenerator wählt dann aktuell die erste Lösung und verwirft die restlichen. Da der Typinferenzalgorithmus auf mehreren Threads parallel ausgeführt wird, kann sich die Reihenfolge der Ergebnisse ändern und somit auch das Ergebnis des Bytecodegenerators. Daher werden bei mehreren Kompilierungen unterschiedliche Ergebnisse erzielt.
|
||||
|
||||
Leider konnte das Problem bisher nicht gelöst werden, da es erst relativ spät bemerkt wurde. In einer späteren Version des Compilers sollte sich \ac{Java-TX} in diesem Punkt aber wie Java verhalten, so dass auch das Visitor Pattern in \ac{Java-TX} korrekt funktioniert.
|
||||
|
||||
|
||||
\subsection{Weitere Bugs und fehlende Features}
|
||||
Neben diesen umfangreich beschriebenen Problemen, gab es noch viele weitere Probleme, die hier nur kurz aufgeführt werden.
|
||||
\begin{enumerate}
|
||||
\item Die Access Modifier wurden nicht korrekt auf die Methoden angewendet. Alle Methoden wurden mit dem Access Modifier \lstinline|public| deklariert. Wenn ein anderer Access Modifier verwendet wurde, wurden dieser einfach hinzugefügt. So konnte es zu Signaturen wie \lstinline|public private void foo()| kommen.
|
||||
\item Die Fehlermeldungen des Compilers wurden verbessert. Es wird nun angezeigt in welcher Zeile und Datei ein Constraint erstellt wurde.
|
||||
\item Überladene Konstruktoren konnten nicht aufgerufen werden.
|
||||
\item If-Statements ohne Blöcke wurden teilweise nicht korrekt verarbeitet.
|
||||
\item \lstinline|toString()| und andere Methoden von \lstinline|Object| konnten auf Interfaces nicht aufgerufen werden.
|
||||
\item Die @Override Annotation bei Methoden führte zu einem Fehler. Annotations wird nun ignoriert.
|
||||
\item Die Typinferenz war für die neu hinzugefügte For\-Each Schleife fehlerhaft.
|
||||
\item Es gab einige Probleme mit Interfaces, welche behoben wurden.
|
||||
\item Der Bytecode beim Aufruf von statischen Methoden war fehlerhaft.
|
||||
\item Bei der Überschreibung von vererbten Methoden mussten die Parametertypen den gleichen Namen haben.
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
Zusätzlich sind auch einige Features aufgefallen, die bis zum aktuellen Stand noch nicht implementiert wurden.
|
||||
|
||||
\begin{enumerate}
|
||||
\item Arrays und damit auch die Main Funktion sind nicht implementiert
|
||||
\item Exceptions sind nur sehr rudimentär implementiert, z.B. sind checked Exceptions aktuell nicht möglich
|
||||
\item Subtypisierung bei Funktionstypen funktioniert noch nicht wie es sollte
|
||||
\item Der Funktionstyp FunVoidN\$\$ für Funktionstypen die void zurückgeben ist aktuell noch nicht umgesetzt
|
||||
\end{enumerate}
|
78
Studienarbeit/content/chapter/04.tex
Normal file
78
Studienarbeit/content/chapter/04.tex
Normal file
@ -0,0 +1,78 @@
|
||||
%!TEX root = ../../main.tex
|
||||
|
||||
\chapter{Vorteile in der Praxis}
|
||||
Generell inferiert \ac{Java-TX} immer den generellsten Typ oder Prinzipaltyp. Für eine formale Definition des Prinzipaltyps in \ac{Java-TX} wird an dieser Stelle auf \cite{plumicke_java-tx_2022}[Abschnitt 5] verwiesen. Für Funktionstypen gilt dabei, dass der Definitionsbereich, also die Parameter maximal (möglichst generell) und der Wertebereich, also der Rückgabewert minimal (möglichst speziell) sein muss \cite{plumicke_java-tx_2022}[Abschnitt 2]. Durch den Typinferenzalgorithmus kann daher daher ein generellerer Typ inferiert werden, als ein Programmierer angegeben hätte. Dadurch wird der Definitionsbereich der Funktion größer und die Wiederverwendbarkeit des Codes steigt potenziell. Zur Verdeutlichung ist in \autoref{lst:prinzipal_type_example} ein reales Beispiel aus dem Code des \JTXC{} gegeben\footnote{Die Imports der Klasse wurden bei den Beispielen in diesem Abschnitt bewusst weggelassen, um den Quellcode kompakt zu halten. Es gilt aber natürlich, dass alle verwendeten Typen importiert werden müssen (vgl. \autoref{sec:java_tx_typeinference})}. Die Aufgabe der Klasse ist in diesem Fall nicht wichtig, daher wurde der Quellcode in diesem Beispiel auf die relevante Methode reduziert. Wie man sehen kann, erwartet die Methode als Parameter eine Liste des Typs \texttt{GenericRefType}, über welche dann mittels For-Each Schleife iteriert wird, wobei die einzelnen Elemente genutzt werden, um eine neue Liste zu erstellen. Die Typisierung des Parameters ist dabei keineswegs ungewöhnlich und wäre vermutlich von vielen Programmieren so oder so ähnlich gewählt worden. Aber handelt es sich bei der Signatur hierbei um die optimale/generellste Typisierung?
|
||||
|
||||
\begin{lstlisting}[language=Java, caption={Beispielklasse aus dem \JTXC{}}, label={lst:prinzipal_type_example}]
|
||||
public class FunNClass extends ClassOrInterface {
|
||||
private static GenericDeclarationList createGenerics(List<GenericRefType> funNParams) {
|
||||
List<GenericTypeVar> generics = new ArrayList<>();
|
||||
for (GenericRefType param : funNParams) {
|
||||
generics.add(new GenericTypeVar(param.getParsedName(),
|
||||
new ArrayList<>(), new NullToken(), new NullToken()));
|
||||
}
|
||||
return new GenericDeclarationList(generics, new NullToken());
|
||||
}
|
||||
...
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
Sehen wir und dazu das Beispiel in \autoref{lst:prinzipal_type_example_javatx} an.
|
||||
|
||||
\begin{lstlisting}[language=java, caption={\autoref{lst:prinzipal_type_example} ohne Typinformationen}, label={lst:prinzipal_type_example_javatx}]
|
||||
public class FunNClass extends ClassOrInterface {
|
||||
private static createGenerics(funNParams) {
|
||||
var generics = new ArrayList<>();
|
||||
for (param : funNParams) {
|
||||
generics.add(new GenericTypeVar(param.getParsedName(),
|
||||
new ArrayList<>(), new NullToken(), new NullToken()));
|
||||
}
|
||||
return new GenericDeclarationList(generics, new NullToken());
|
||||
}
|
||||
...
|
||||
}
|
||||
\end{lstlisting}
|
||||
|
||||
Hier wurden alle inferierbaren Typen entfernt. Relevant ist hier vor allem der Rückgabetyp und der Typ des Parameters der Methode. Außerdem muss der generische Typ der Liste \lstinline|generics| nicht mehr explizit angegeben werden und im Kopf der For-Each Schleife wurde der Typ der Variablen \texttt{param} entfernt\footnote{Dies wäre auch in Java mit dem \texttt{var} Platzhalter möglich}. In \autoref{lst:prinzipal_type_example_javatx_infered} sind die vom \JTXC{} inferierten Typen für diese Klasse zu sehen. Interessant ist vor allem der Typ des Parameters \lstinline|funNParams| der Methode \lstinline|createGenerics|. Dieser wurde im Vergleich zu \autoref{lst:prinzipal_type_example} von \texttt{List<GenericRefType>} zu \lstinline|Iterable<? extends GenericRefType>|. Wie man in \autoref{fig:java_21_collections} sehen kann, ist \lstinline|Iterable| ein Interface, dass von \lstinline|List| erweitert wird und somit ein Supertyp von List.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\begin{tikzpicture}
|
||||
\tikzstyle{rect} = [rectangle, draw, text width=13cm, align=center, minimum height=1.5cm, inner sep=3pt]
|
||||
\tikzstyle{implements} = [->, dashed, >=open triangle 60]
|
||||
|
||||
\node[rect] (iterable) {java.lang.Iterable};
|
||||
\node[rect, below=of iterable] (collection) {java.util.Collection};
|
||||
\node[rect, below=of collection] (sequencedcollection) {java.util.SequencedCollection};
|
||||
\node[rect, below=of sequencedcollection] (list) {java.util.List};
|
||||
|
||||
\draw[implements] (collection) -- (iterable);
|
||||
\draw[implements] (sequencedcollection) -- (collection);
|
||||
\draw[implements] (list) -- (sequencedcollection);
|
||||
|
||||
\end{tikzpicture}
|
||||
\caption{Vererbungshierarchie von java.util.List ab Java 21 \cite{noauthor_java_nodate-2}}
|
||||
\label{fig:java_21_collections}
|
||||
\end{figure}
|
||||
|
||||
Die Wildcard \lstinline|? extends| ermöglicht Kovarianz und somit auch Subtypen von \lstinline|GenericRefType| als generischen Typparameter. Mit dem neuen Typ ist der Definitionsbereich der Methode somit offensichtlich größer als zuvor und der Typ damit genereller. Aber ist dieser Typ in diesem Kontext auch korrekt?
|
||||
\newpage
|
||||
\begin{lstlisting}[language=java, caption={Inferierte Typen für \autoref{lst:prinzipal_type_example_javatx}}, label={lst:prinzipal_type_example_javatx_infered}]
|
||||
public class FunNClass extends ClassOrInterface {
|
||||
private static GenericDeclarationList createGenerics(Iterable<? extends GenericRefType>funNParams) {
|
||||
var generics = new ArrayList<GenericTypeVar>();
|
||||
for (GenericRefType param : funNParams) {
|
||||
generics.add(new GenericTypeVar(param.getParsedName(),
|
||||
new ArrayList<>(), new NullToken(), new NullToken()));
|
||||
}
|
||||
return new GenericDeclarationList(generics, new NullToken());
|
||||
}
|
||||
...
|
||||
\end{lstlisting}
|
||||
|
||||
Zunächst einmal wird in der Funktion die Liste lediglich durchlaufen. Es werden also keine speziellen Methoden des Interface \texttt{List} verwendet. Die For-Each Schleife ist auf alle Typen anwendbar, die das Iterable Interface implementieren.
|
||||
Iterable ist also der allgemeinste Typ, auf den eine For-Each Schleife angewandt werden kann \cite{noauthor_for-each_nodate}.
|
||||
Da innerhalb der Methode nur lesend auf \lstinline|funNParams| zugegriffen wird, ist auch die Kovarianz des Typs unproblematisch und korrekt \cite{naftalin_java_2007}[S.19 ff]. Der Typ ist also ein korrekter Typ für den Parameter \lstinline|funNParams|. Die meisten Java Programmierer hätten diesen Typen vermutlich nicht gefunden. Dies zeigt die Stärke des Typinferenzalgorithmus von \ac{Java-TX}. Dass der Rückgabewert bereits der speziellste Typ ist, ist leicht zu sehen, da in der letzten Zeile explizit ein Objekt des Typs \lstinline|GenericDeclarationList| zurückgegeben wird.
|
||||
Alle weiteren Typen, die inferiert wurden, entsprechen den Typen in \autoref{lst:prinzipal_type_example} und sind somit ebenfalls korrekt.
|
||||
|
||||
Grundsätzlich wird der Code durch das entfernen von Typen kompakter. Es lässt sich allerdings darüber streiten, ob der Code durch das weglassen der Typinformationen auch lesbarer wird. Es kann sicherlich auch von Vorteil sein die Parameter- und Rückgabetypen einer Methode direkt zu sehen. Hier wäre das entwickelte Eclipse Plugin ein guter Kompromiss, welches den gewünschten Typ direkt in den Quellcode einfügen kann \cite{stadelmeier_java_2015}. Dies ist vor allem auch deshalb sinnvoll weil es mehrere korrekte Typen geben kann \cite{plumicke_java-tx_2022}[Abschnitt 3.1]. In diesem Fall könnte der Entwickler den gewünschten Typen auswählen.
|
35
Studienarbeit/content/chapter/05.tex
Normal file
35
Studienarbeit/content/chapter/05.tex
Normal file
@ -0,0 +1,35 @@
|
||||
\chapter{Fazit und Ausblick}
|
||||
\section{Fazit}
|
||||
Im Laufe dieser Studienarbeit konnte bisher nur ein Bruchteil des Quellcodes übersetzt werden. \autoref{fig:distribution} zeigt das aktuelle Verhältnis von Java zu \ac{Java-TX} Quelldateien. Bisher konnten nur 18 von 251 Quelldateien erfolgreich übersetzt werden. \grqq{}Erfolgreich\glqq{} bedeutet in diesem Kontext, dass alle Tests der Testsuite erfolgreich durchlaufen wurden.
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\begin{tikzpicture}
|
||||
\pie[sum=251]{18/Java-TX, 233/Java}
|
||||
\end{tikzpicture}
|
||||
\caption{Verhältnis der Java und \ac{Java-TX} Dateien im \JTXCinJTX}
|
||||
\label{fig:distribution}
|
||||
\end{figure}
|
||||
|
||||
|
||||
Die übersetzten Dateien beschränken sich aktuell auf die Pakete \lstinline|de.dhbwstuttgart.typeinference| und \lstinline|de.dhbwstuttgart.syntaxtree|. Der Umfang der übersetzten Dateien ist vergleichsweise gering. Dennoch konnten durch die Studienarbeit viele Bugs im Compiler gefunden und behoben werden, wodurch sich die generelle Qualität des Compilers verbessert hat. Einige neue Features, welche zum Übersetzen der Quelldateien in \ac{Java-TX} notwendig waren, wurden ebenfalls hinzugefügt. Die größte Schwachstelle des Compilers sind aktuell wohl die Fehlermeldungen. Diese sind oft schwer zu verstehen und einzugrenzen. Hier besteht definitiv noch Verbesserungspotential. Außerdem fehlen auch aktuell noch einige der grundlegenden Funktionen von Java, wie z.B. die Main Methode, die wegen der fehlenden Unterstützung für Arrays noch nicht implementiert wurde.
|
||||
|
||||
\section{Ausblick}
|
||||
Das langfristige Ziel wird sicherlich sein (ggf. in nachfolgenden Studienarbeiten), den gesamten Quellcode des \JTXC{} in \ac{Java-TX} zu übersetzen\footnote{Externe Tools wie \gls{Antlr} oder \gls{ASM}, die zur Implementierung des Compilers verwendet wurden, werden natürlich weiterhin Java Code verwenden}, um die Qualität und Funktionsumfang des Compilers sicherzustellen. Der Weg dahin ist jedoch noch weit. Es gibt sicherlich noch viele unentdeckte Bugs und Probleme, die es zu lösen gilt. Zudem müsste man an bestimmten Stellen nicht nur die Typinformationen entfernen, sondern den Code anpassen. Der \JTXC{} verwendet historisch bedingt teilweise noch alte Java-Features, die in \ac{Java-TX} nicht mehr unterstützt werden, z.B. Raw Types \cite{noauthor_raw_nodate}.
|
||||
Außerdem müsste man zum aktuellen Stand des Compilers sämtliche Arrays in Listen umwandeln, da \ac{Java-TX} aktuell keine Arrays unterstützt. Dies ist darauf zurückzuführen, dass Arrays auch in Java eine gewisse Sonderstellung haben, da sie aus einer Zeit vor generischen Typen stammen und im Vergleich zu Collections einige Nachteile haben \cite{naftalin_java_2007}[Abschnitt 2.5, 6.9].
|
||||
Doch auch wenn Arrays im Quellcode durch Listen ersetzt werden können, gibt es gewisse Methoden in Java Bibliotheken, die Arrays verwenden.
|
||||
So z.B. auch die Methode \texttt{split} der Klasse \texttt{java.lang.String}, die ein Array von Strings zurückgibt \cite{noauthor_string_nodate}:
|
||||
|
||||
\begin{verbatim}
|
||||
public final class String implements ... {
|
||||
...
|
||||
public String[] split(String regex) {...}
|
||||
public String[] split(String regex, int limit) {...}
|
||||
...
|
||||
}
|
||||
\end{verbatim}
|
||||
|
||||
Diese Methoden sind z.B. aus \ac{Java-TX} nicht aufrufbar, da sie Arrays zurückgeben.
|
||||
Langfristig wird es also notwendig sein, Arrays in \ac{Java-TX} zu unterstützen, um die Kompatibilität mit Java Klassen zu gewährleisten. Arrays sind in Java auch essenziell für die Main Funktion, die daher in \ac{Java-TX} auch noch fehlt.
|
||||
|
||||
Erstrebenswert wäre es auch, die Fehlermeldungen des Compilers weiter zu verbessern. Dies würde sicherlich auch die Fehlersuche beim Übersetzen der Quelldateien erleichtern. Auch eine vollständige Kompatibilität von \ac{Java-TX} Funktionstypen und funktionalen Interfaces wäre wünschenswert, um den Vorteil der echten Funktionstypen vollumfänglich mit bestehenden Java Bibliotheken ausnutzen zu können.
|
16
Studienarbeit/content/glossary.tex
Normal file
16
Studienarbeit/content/glossary.tex
Normal file
@ -0,0 +1,16 @@
|
||||
%!TEX root = ../main.tex
|
||||
|
||||
%
|
||||
% To create glossary run the following command:
|
||||
% makeglossaries main.acn && makeglossaries main.glo
|
||||
%
|
||||
|
||||
%
|
||||
% Glossareintraege --> referenz, name, beschreibung
|
||||
% Aufruf mit \gls{...}
|
||||
%
|
||||
\newglossaryentry{JUnit}{name={JUnit},description={JUnit ist ein Framework für Java, um automatisierte Tests zu schreiben}}
|
||||
\newglossaryentry{javac}{name={javac},description={javac ist der Java-Compiler von Oracle}}
|
||||
\newglossaryentry{Maven}{name={Maven},description={Apache Maven ist ein Build-Management-Tool das primär für Java-Projekte eingesetzt wird. Neben dem automatisierten Bauen von Projekten unterstützt es eine einfache Verwaltung von Abhängigkeiten}}
|
||||
\newglossaryentry{Antlr}{name={Antlr},description={ANTLR (ANother Tool for Language Recognition) ist ein objektorientierter Parsergenerator, der unter anderem mit Java verwendet werden kann}}
|
||||
\newglossaryentry{ASM}{name={ASM},description={ASM ist ein universelles Java-Bytecode-Manipulations- und Analyse-Framework}}
|
BIN
Studienarbeit/images/cover/logo-company.png
Normal file
BIN
Studienarbeit/images/cover/logo-company.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.6 KiB |
BIN
Studienarbeit/images/cover/logo-dhbw.pdf
Normal file
BIN
Studienarbeit/images/cover/logo-dhbw.pdf
Normal file
Binary file not shown.
BIN
Studienarbeit/images/logo.png
Normal file
BIN
Studienarbeit/images/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.6 KiB |
39
Studienarbeit/lang/de.tex
Normal file
39
Studienarbeit/lang/de.tex
Normal file
@ -0,0 +1,39 @@
|
||||
%!TEX root = ../main.tex
|
||||
|
||||
\newcommand{\degreePhrase}{für die Prüfung zum}
|
||||
\newcommand{\lecturePhrase}{für die Vorlesung}
|
||||
\newcommand{\departmentPhrase}{Studiengang}
|
||||
\newcommand{\locationUniversityPhrase}{Duale Hochschule Baden-Württemberg}
|
||||
\newcommand{\documentAuthorPhrase}{von}
|
||||
\newcommand{\documentPeriodPhrase}{Bearbeitungszeitraum}
|
||||
\newcommand{\matriculationNumberPhrase}{Matrikelnummer}
|
||||
\newcommand{\coursePhrase}{Kurs}
|
||||
\newcommand{\companyPhrase}{Ausbildungsbetrieb}%
|
||||
|
||||
\newcommand{\tutorPhrase}{%
|
||||
\IfStrEqCase{\documentType}{%
|
||||
{T2\_1000}{Gutachter}%
|
||||
{T2\_2000}{Gutachter}%
|
||||
{T2\_3100}{Gutachter}%
|
||||
{T2\_3300}{Erstgutachter}%
|
||||
}[Gutachter]
|
||||
}
|
||||
|
||||
\newcommand{\evaluatorPhrase}{Zweitgutachter}
|
||||
\newcommand{\restrictionNoticesPhrase}{Sperrvermerk}
|
||||
\newcommand{\declarationPhrase}{Erklärung}
|
||||
\newcommand{\glossaryPhrase}{Glossar}
|
||||
\newcommand{\appendixPhrase}{Anhang}
|
||||
\newcommand{\listingPhrase}{Listing}
|
||||
\newcommand{\listListingPhrase}{Listings}
|
||||
\newcommand{\authorListingPhrase}{Listing}
|
||||
\newcommand{\acronymsPhrase}{Abkürzungsverzeichnis}
|
||||
|
||||
\newcommand{\documentTypePhrase}{%
|
||||
\IfStrEqCase{\documentType}{%
|
||||
{T2\_1000}{Projektarbeit}%
|
||||
{T2\_2000}{Projektarbeit}%
|
||||
{T2\_3100}{Studienarbeit}%
|
||||
{T2\_3300}{Bachelorarbeit}%
|
||||
}[{\documentType\ignorespaces}]
|
||||
}
|
41
Studienarbeit/lang/en.tex
Normal file
41
Studienarbeit/lang/en.tex
Normal file
@ -0,0 +1,41 @@
|
||||
%!TEX root = ../main.tex
|
||||
|
||||
\newcommand{\degreePhrase}{for the}
|
||||
\newcommand{\lecturePhrase}{for the lecture}
|
||||
\newcommand{\departmentPhrase}{from the Course of Studies}
|
||||
\newcommand{\locationUniversityPhrase}{at the Cooperative State University Baden-Württemberg}
|
||||
\newcommand{\documentAuthorPhrase}{by}
|
||||
\newcommand{\documentPeriodPhrase}{Time of Project}
|
||||
\newcommand{\matriculationNumberPhrase}{Student ID}
|
||||
\newcommand{\coursePhrase}{Course}
|
||||
\newcommand{\companyPhrase}{Company}
|
||||
|
||||
\newcommand{\tutorPhrase}{%
|
||||
\IfStrEqCase{\documentType}{%
|
||||
{T2\_1000}{Reviewer}%
|
||||
{T2\_2000}{Reviewer}%
|
||||
{T2\_3100}{Reviewer}%
|
||||
{T2\_3300}{First Reviewer}%
|
||||
}[Reviewer]
|
||||
}
|
||||
|
||||
\newcommand{\evaluatorPhrase}{Second Reviewer}
|
||||
\newcommand{\restrictionNoticesPhrase}{Confidentiality Statement} %Restriction Notice}
|
||||
\newcommand{\declarationPhrase}{Author's declaration}
|
||||
\newcommand{\glossaryPhrase}{Glossary}
|
||||
\newcommand{\langabkverz}{Acronyms}
|
||||
\newcommand{\langabstract}{Abstract}
|
||||
\newcommand{\appendixPhrase}{Appendix}
|
||||
\newcommand{\listingPhrase}{Listing}
|
||||
\newcommand{\listListingPhrase}{Listings}
|
||||
\newcommand{\authorListingPhrase}{Listing}
|
||||
\newcommand{\acronymsPhrase}{Acronyms}
|
||||
|
||||
\newcommand{\documentTypePhrase}{%
|
||||
\IfStrEqCase{\documentType}{%
|
||||
{T2\_1000}{Project Thesis}%
|
||||
{T2\_2000}{Project Thesis}%
|
||||
{T2\_3100}{Semester Paper}%
|
||||
{T2\_3300}{Bachelor Thesis}%
|
||||
}[{\documentType\ignorespaces}]
|
||||
}
|
563
Studienarbeit/main.aux
Normal file
563
Studienarbeit/main.aux
Normal file
@ -0,0 +1,563 @@
|
||||
\relax
|
||||
\providecommand*\new@tpo@label[2]{}
|
||||
\providecommand\babel@aux[2]{}
|
||||
\@nameuse{bbl@beforestart}
|
||||
\catcode `"\active
|
||||
\AC@reset@newl@bel
|
||||
\providecommand\hyper@newdestlabel[2]{}
|
||||
\providecommand\HyField@AuxAddToFields[1]{}
|
||||
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||
\providecommand\BKM@entry[2]{}
|
||||
\abx@aux@refcontext{nty/global//global/global}
|
||||
\gdef \LT@i {\LT@entry
|
||||
{1}{247.62204pt}\LT@entry
|
||||
{1}{247.62204pt}}
|
||||
\providecommand\@newglossary[4]{}
|
||||
\@newglossary{main}{glg}{gls}{glo}
|
||||
\providecommand\@glsorder[1]{}
|
||||
\providecommand\@istfilename[1]{}
|
||||
\@istfilename{main.ist}
|
||||
\@glsorder{word}
|
||||
\babel@aux{ngerman}{}
|
||||
\BKM@entry{id=1,dest={636861707465722A2E33},srcline={3}}{5C3337365C3337375C303030415C303030625C3030306B5C3030305C3337345C303030725C3030307A5C303030755C3030306E5C303030675C303030735C303030765C303030655C303030725C3030307A5C303030655C303030695C303030635C303030685C3030306E5C303030695C30303073}
|
||||
\pp@pagectr{footnote}{1}{6}{V}
|
||||
\@writefile{toc}{\contentsline {chapter}{\nonumberline Abkürzungsverzeichnis}{V}{chapter*.3}\protected@file@percent }
|
||||
\@writefile{lof}{\addvspace {10\p@ }}
|
||||
\@writefile{lot}{\addvspace {10\p@ }}
|
||||
\@writefile{lol}{\addvspace {10\p@ }}
|
||||
\newacro{Java-TX}[\AC@hyperlink{Java-TX}{Java-TX}]{Java-Type eXtended}
|
||||
\newacro{GNU}[\AC@hyperlink{GNU}{GNU}]{GNU's Not Unix}
|
||||
\newacro{JVM}[\AC@hyperlink{JVM}{JVM}]{Java Virtual Machine}
|
||||
\newacro{JDK}[\AC@hyperlink{JDK}{JDK}]{Java Development Kit}
|
||||
\newacro{WSL}[\AC@hyperlink{WSL}{WSL}]{Windows Subsystem for Linux}
|
||||
\newacro{IDE}[\AC@hyperlink{IDE}{IDE}]{Integrated Development Environment}
|
||||
\newacro{GCC}[\AC@hyperlink{GCC}{GCC}]{GNU Compiler Collection}
|
||||
\newacro{Bash}[\AC@hyperlink{Bash}{Bash}]{Bourne Again Shell}
|
||||
\BKM@entry{id=2,dest={636861707465722A2E34},srcline={66}}{5C3337365C3337375C303030415C303030625C303030625C303030695C3030306C5C303030645C303030755C3030306E5C303030675C303030735C303030765C303030655C303030725C3030307A5C303030655C303030695C303030635C303030685C3030306E5C303030695C30303073}
|
||||
\@writefile{toc}{\contentsline {chapter}{\nonumberline Abbildungsverzeichnis}{VI}{chapter*.4}\protected@file@percent }
|
||||
\AC@undonewlabel{acro:Java-TX}
|
||||
\newlabel{acro:Java-TX}{{}{VI}{\acronymsPhrase }{section*.5}{}}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\BKM@entry{id=3,dest={636861707465722A2E36},srcline={70}}{5C3337365C3337375C303030545C303030615C303030625C303030655C3030306C5C3030306C5C303030655C3030306E5C303030765C303030655C303030725C3030307A5C303030655C303030695C303030635C303030685C3030306E5C303030695C30303073}
|
||||
\@writefile{toc}{\contentsline {chapter}{\nonumberline Tabellenverzeichnis}{VII}{chapter*.6}\protected@file@percent }
|
||||
\BKM@entry{id=4,dest={636861707465722A2E37},srcline={74}}{5C3337365C3337375C3030304C5C303030695C303030735C303030745C303030695C3030306E5C303030675C30303073}
|
||||
\@writefile{toc}{\contentsline {chapter}{\nonumberline Listings}{VIII}{chapter*.7}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\BKM@entry{id=5,dest={636861707465722E31},srcline={3}}{5C3337365C3337375C303030315C3030305C3034305C303030475C303030725C303030755C3030306E5C303030645C3030306C5C303030615C303030675C303030655C3030306E}
|
||||
\BKM@entry{id=6,dest={73656374696F6E2E312E31},srcline={7}}{5C3337365C3337375C303030315C3030302E5C303030315C3030305C3034305C303030545C303030795C303030705C303030695C3030306E5C303030665C303030655C303030725C303030655C3030306E5C3030307A5C3030305C3034305C303030695C3030306E5C3030305C3034305C3030304A5C303030615C303030765C30303061}
|
||||
\BKM@entry{id=7,dest={73756273656374696F6E2E312E312E31},srcline={10}}{5C3337365C3337375C303030315C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030545C303030795C303030705C303030695C3030306E5C303030665C303030655C303030725C303030655C3030306E5C3030307A5C3030305C3034305C303030625C303030655C303030695C3030305C3034305C303030675C303030655C3030306E5C303030655C303030725C303030695C303030735C303030635C303030685C303030655C3030306E5C3030305C3034305C3030304D5C303030655C303030745C303030685C3030306F5C303030645C303030655C3030306E}
|
||||
\abx@aux@cite{0}{buckley_java_2004}
|
||||
\abx@aux@segm{0}{0}{buckley_java_2004}
|
||||
\abx@aux@cite{0}{gosling_java_2005}
|
||||
\abx@aux@segm{0}{0}{gosling_java_2005}
|
||||
\pp@pagectr{footnote}{2}{11}{1}
|
||||
\@writefile{toc}{\contentsline {chapter}{\numberline {1}Grundlagen}{1}{chapter.1}\protected@file@percent }
|
||||
\@writefile{lof}{\addvspace {10\p@ }}
|
||||
\@writefile{lot}{\addvspace {10\p@ }}
|
||||
\@writefile{lol}{\addvspace {10\p@ }}
|
||||
\acronymused{Java-TX}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.1}Typinferenz in Java}{1}{section.1.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1.1}Typinferenz bei generischen Methoden}{1}{subsection.1.1.1}\protected@file@percent }
|
||||
\pp@pagectr{footnote}{3}{11}{1}
|
||||
\abx@aux@cite{0}{cimadamore_jep_2011}
|
||||
\abx@aux@segm{0}{0}{cimadamore_jep_2011}
|
||||
\abx@aux@cite{0}{cimadamore_jep_2011}
|
||||
\abx@aux@segm{0}{0}{cimadamore_jep_2011}
|
||||
\abx@aux@cite{0}{oracle_type_nodate}
|
||||
\abx@aux@segm{0}{0}{oracle_type_nodate}
|
||||
\abx@aux@cite{0}{oracle_type_nodate}
|
||||
\abx@aux@segm{0}{0}{oracle_type_nodate}
|
||||
\abx@aux@cite{0}{oracle_type_nodate}
|
||||
\abx@aux@segm{0}{0}{oracle_type_nodate}
|
||||
\BKM@entry{id=8,dest={73756273656374696F6E2E312E312E32},srcline={51}}{5C3337365C3337375C303030315C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030445C303030655C303030725C3030305C3034305C303030445C303030695C303030615C3030306D5C3030306F5C3030306E5C303030645C3030305C3034305C3030304F5C303030705C303030655C303030725C303030615C303030745C3030306F5C30303072}
|
||||
\abx@aux@cite{0}{darcy_java_2010}
|
||||
\abx@aux@segm{0}{0}{darcy_java_2010}
|
||||
\abx@aux@cite{0}{gosling_java_2014}
|
||||
\abx@aux@segm{0}{0}{gosling_java_2014}
|
||||
\newlabel{lst:list_of_type_explizit}{{1.1}{2}{List.of() mit explizitem Typ}{lstlisting.1.1}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.1}List.of() mit explizitem Typ}{2}{lstlisting.1.1}\protected@file@percent }
|
||||
\newlabel{lst:list_of_type_implizit}{{1.2}{2}{List.of() mit implizitem Typ}{lstlisting.1.2}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.2}List.of() mit implizitem Typ}{2}{lstlisting.1.2}\protected@file@percent }
|
||||
\newlabel{lst:java8_typinferenz}{{1.3}{2}{Verbesserungen für Typinferenz in Java 8 (Beispiel aus {\cite {oracle_type_nodate}[Target Types]})}{lstlisting.1.3}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.3}Verbesserungen für Typinferenz in Java 8 (Beispiel aus {\blx@tocontentsinit {0}\cite {oracle_type_nodate}[Target Types]})}{2}{lstlisting.1.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1.2}Der Diamond Operator}{2}{subsection.1.1.2}\protected@file@percent }
|
||||
\newlabel{lst:java7diamond}{{1.4}{2}{Java 7 Diamond Operator}{lstlisting.1.4}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.4}Java 7 Diamond Operator}{2}{lstlisting.1.4}\protected@file@percent }
|
||||
\abx@aux@cite{0}{oracle_type_nodate}
|
||||
\abx@aux@segm{0}{0}{oracle_type_nodate}
|
||||
\BKM@entry{id=9,dest={73756273656374696F6E2E312E312E33},srcline={67}}{5C3337365C3337375C303030315C3030302E5C303030315C3030302E5C303030335C3030305C3034305C303030545C303030795C303030705C303030695C3030306E5C303030665C303030655C303030725C303030655C3030306E5C3030307A5C3030305C3034305C303030625C303030655C303030695C3030305C3034305C3030304C5C303030615C3030306D5C303030625C303030645C303030615C3030305C3034305C303030415C303030755C303030735C303030645C303030725C3030305C3337345C303030635C3030306B5C303030655C3030306E}
|
||||
\abx@aux@cite{0}{darcy_jep_2011}
|
||||
\abx@aux@segm{0}{0}{darcy_jep_2011}
|
||||
\abx@aux@cite{0}{gosling_java_2014}
|
||||
\abx@aux@segm{0}{0}{gosling_java_2014}
|
||||
\BKM@entry{id=10,dest={73756273656374696F6E2E312E312E34},srcline={84}}{5C3337365C3337375C303030315C3030302E5C303030315C3030302E5C303030345C3030305C3034305C303030445C303030655C303030725C3030305C3034305C303030545C303030795C303030705C303030705C3030306C5C303030615C303030745C3030307A5C303030685C303030615C3030306C5C303030745C303030655C303030725C3030305C3034305C303030765C303030615C30303072}
|
||||
\abx@aux@cite{0}{goetz_jep_2016}
|
||||
\abx@aux@segm{0}{0}{goetz_jep_2016}
|
||||
\abx@aux@cite{0}{goetz_jep_2016}
|
||||
\abx@aux@segm{0}{0}{goetz_jep_2016}
|
||||
\newlabel{lst:java7nodiamond}{{1.5}{3}{Java Generics ohne Diamond Operator}{lstlisting.1.5}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.5}Java Generics ohne Diamond Operator}{3}{lstlisting.1.5}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1.3}Typinferenz bei Lambda Ausdrücken}{3}{subsection.1.1.3}\protected@file@percent }
|
||||
\newlabel{lst:lambda}{{1.6}{3}{Java 8 Lambda-Ausdrücke}{lstlisting.1.6}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.6}Java 8 Lambda-Ausdrücke}{3}{lstlisting.1.6}\protected@file@percent }
|
||||
\newlabel{lst:lambda_explicit}{{1.7}{3}{Lambda-Ausdruck mit explizitem Typ}{lstlisting.1.7}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.7}Lambda-Ausdruck mit explizitem Typ}{3}{lstlisting.1.7}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1.4}Der Typplatzhalter var}{3}{subsection.1.1.4}\protected@file@percent }
|
||||
\abx@aux@cite{0}{goetz_jep_2016}
|
||||
\abx@aux@segm{0}{0}{goetz_jep_2016}
|
||||
\BKM@entry{id=11,dest={73656374696F6E2E312E32},srcline={102}}{5C3337365C3337375C303030315C3030302E5C303030325C3030305C3034305C303030545C303030795C303030705C303030695C3030306E5C303030665C303030655C303030725C303030655C3030306E5C3030307A5C3030305C3034305C303030695C3030306E5C3030305C3034305C3030304A5C303030615C303030765C303030615C3030302D5C303030545C30303058}
|
||||
\abx@aux@cite{0}{thompson_haskell_2011}
|
||||
\abx@aux@segm{0}{0}{thompson_haskell_2011}
|
||||
\abx@aux@cite{0}{marlow_haskell_2010}
|
||||
\abx@aux@segm{0}{0}{marlow_haskell_2010}
|
||||
\abx@aux@cite{0}{pierce_types_2002}
|
||||
\abx@aux@segm{0}{0}{pierce_types_2002}
|
||||
\abx@aux@cite{0}{marlow_haskell_2010}
|
||||
\abx@aux@segm{0}{0}{marlow_haskell_2010}
|
||||
\newlabel{lst:java10var}{{1.8}{4}{Java 10 var Platzhalter}{lstlisting.1.8}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.8}Java 10 var Platzhalter}{4}{lstlisting.1.8}\protected@file@percent }
|
||||
\newlabel{lst:java10var_limits}{{1.9}{4}{Ungültige Verwendung des \lstinline |var| Schlüsselworts}{lstlisting.1.9}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.9}Ungültige Verwendung des \lstinline |var| Schlüsselworts}{4}{lstlisting.1.9}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.2}Typinferenz in Java-TX}{4}{section.1.2}\protected@file@percent }
|
||||
\newlabel{sec:java_tx_typeinference}{{1.2}{4}{Typinferenz in Java-TX}{section.1.2}{}}
|
||||
\newlabel{lst:haskell_add}{{1.10}{4}{Funktion add in Haskell}{lstlisting.1.10}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.10}Funktion add in Haskell}{4}{lstlisting.1.10}\protected@file@percent }
|
||||
\abx@aux@cite{0}{vandevoorde_c_2010}
|
||||
\abx@aux@segm{0}{0}{vandevoorde_c_2010}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\newlabel{lst:simple_typeinference_wo_types}{{1.11}{5}{Untypisierte Methode add}{lstlisting.1.11}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.11}Untypisierte Methode add}{5}{lstlisting.1.11}\protected@file@percent }
|
||||
\newlabel{lst:simple_typeinference_w_types}{{1.12}{5}{Von Typinferenz errechnete Typen für \autoref {lst:simple_typeinference_wo_types}}{lstlisting.1.12}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.12}Von Typinferenz errechnete Typen für \autoref {lst:simple_typeinference_wo_types}}{5}{lstlisting.1.12}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\BKM@entry{id=12,dest={73656374696F6E2E312E33},srcline={172}}{5C3337365C3337375C303030315C3030302E5C303030335C3030305C3034305C303030415C3030306E5C3030306F5C3030306E5C303030795C3030306D5C303030655C3030305C3034305C303030465C303030755C3030306E5C3030306B5C303030745C303030695C3030306F5C3030306E5C303030655C3030306E5C3030305C3034305C303030695C3030306E5C3030305C3034305C3030304A5C303030615C303030765C30303061}
|
||||
\abx@aux@cite{0}{noauthor_openjdk_nodate}
|
||||
\abx@aux@segm{0}{0}{noauthor_openjdk_nodate}
|
||||
\abx@aux@cite{0}{goetz_java_2010}
|
||||
\abx@aux@segm{0}{0}{goetz_java_2010}
|
||||
\abx@aux@cite{0}{gosling_java_2014}
|
||||
\abx@aux@segm{0}{0}{gosling_java_2014}
|
||||
\newlabel{lst:globaltypeinference2}{{1.13}{6}{Methodenüberladungen durch Typinferenz}{lstlisting.1.13}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.13}Methodenüberladungen durch Typinferenz}{6}{lstlisting.1.13}\protected@file@percent }
|
||||
\newlabel{lst:globaltypeinference2result}{{1.14}{6}{Resultat der Typinferenz für \autoref {lst:globaltypeinference2}}{lstlisting.1.14}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.14}Resultat der Typinferenz für \autoref {lst:globaltypeinference2}}{6}{lstlisting.1.14}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.3}Anonyme Funktionen in Java}{6}{section.1.3}\protected@file@percent }
|
||||
\newlabel{sec:lambda_java}{{1.3}{6}{Anonyme Funktionen in Java}{section.1.3}{}}
|
||||
\BKM@entry{id=13,dest={73756273656374696F6E2E312E332E31},srcline={175}}{5C3337365C3337375C303030315C3030302E5C303030335C3030302E5C303030315C3030305C3034305C303030465C303030755C3030306E5C3030306B5C303030745C303030695C3030306F5C3030306E5C303030615C3030306C5C303030655C3030305C3034305C303030495C3030306E5C303030745C303030655C303030725C303030665C303030615C303030635C303030655C303030735C3030305C3034305C303030755C3030306E5C303030645C3030305C3034305C3030304C5C303030615C3030306D5C303030625C303030645C303030615C3030305C3034305C303030415C303030755C303030735C303030645C303030725C3030305C3337345C303030635C3030306B5C30303065}
|
||||
\abx@aux@cite{0}{gosling_java_2014}
|
||||
\abx@aux@segm{0}{0}{gosling_java_2014}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.1}Funktionale Interfaces und Lambda Ausdrücke}{7}{subsection.1.3.1}\protected@file@percent }
|
||||
\newlabel{sec:lambda}{{1.3.1}{7}{Funktionale Interfaces und Lambda Ausdrücke}{subsection.1.3.1}{}}
|
||||
\newlabel{lst:runnable_wo_lambda}{{1.15}{7}{Erstellung eines Threads mit einer anonymen Klasse}{lstlisting.1.15}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.15}Erstellung eines Threads mit einer anonymen Klasse}{7}{lstlisting.1.15}\protected@file@percent }
|
||||
\newlabel{lst:runnable_w_lambda}{{1.16}{8}{Erstellung eines Threads mit einem Lambda Ausdruck}{lstlisting.1.16}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.16}Erstellung eines Threads mit einem Lambda Ausdruck}{8}{lstlisting.1.16}\protected@file@percent }
|
||||
\newlabel{lst:lambda_with_var}{{1.17}{8}{Lambda Ausdruck mit var}{lstlisting.1.17}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.17}Lambda Ausdruck mit var}{8}{lstlisting.1.17}\protected@file@percent }
|
||||
\abx@aux@cite{0}{goos_variance-based_2002}
|
||||
\abx@aux@segm{0}{0}{goos_variance-based_2002}
|
||||
\abx@aux@cite{0}{plumicke_java-tx_2022}
|
||||
\abx@aux@segm{0}{0}{plumicke_java-tx_2022}
|
||||
\@writefile{lot}{\contentsline {table}{\numberline {1.1}{\ignorespaces Gängige funktionale Interfaces in der Java Standardbibliothek}}{9}{table.1.1}\protected@file@percent }
|
||||
\newlabel{tab:java_functional_interfaces}{{1.1}{9}{Gängige funktionale Interfaces in der Java Standardbibliothek}{table.1.1}{}}
|
||||
\pp@pagectr{footnote}{4}{19}{9}
|
||||
\abx@aux@cite{0}{naftalin_java_2007}
|
||||
\abx@aux@segm{0}{0}{naftalin_java_2007}
|
||||
\BKM@entry{id=14,dest={73756273656374696F6E2E312E332E32},srcline={292}}{5C3337365C3337375C303030315C3030302E5C303030335C3030302E5C303030325C3030305C3034305C303030575C303030695C3030306C5C303030645C303030635C303030615C303030725C303030645C30303073}
|
||||
\abx@aux@cite{0}{naftalin_java_2007}
|
||||
\abx@aux@segm{0}{0}{naftalin_java_2007}
|
||||
\newlabel{def:subtyping_of_function_types}{{1.3.5}{10}{Subtypisierung für Funktionstypen}{definition.1.3.5}{}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.2}Wildcards}{10}{subsection.1.3.2}\protected@file@percent }
|
||||
\abx@aux@cite{0}{piquerez_variances_nodate}
|
||||
\abx@aux@segm{0}{0}{piquerez_variances_nodate}
|
||||
\abx@aux@cite{0}{wagner_creating_2021}
|
||||
\abx@aux@segm{0}{0}{wagner_creating_2021}
|
||||
\BKM@entry{id=15,dest={73656374696F6E2E312E34},srcline={307}}{5C3337365C3337375C303030315C3030302E5C303030345C3030305C3034305C303030455C303030635C303030685C303030745C303030655C3030305C3034305C303030465C303030755C3030306E5C3030306B5C303030745C303030695C3030306F5C3030306E5C303030735C303030745C303030795C303030705C303030655C3030306E5C3030305C3034305C303030695C3030306E5C3030305C3034305C3030304A5C303030615C303030765C303030615C3030302D5C303030545C30303058}
|
||||
\abx@aux@cite{0}{plumicke_java-tx_2022}
|
||||
\abx@aux@segm{0}{0}{plumicke_java-tx_2022}
|
||||
\abx@aux@cite{0}{plumicke_introducing_2017}
|
||||
\abx@aux@segm{0}{0}{plumicke_introducing_2017}
|
||||
\newlabel{lst:covariance}{{1.18}{11}{Varianz in Java}{lstlisting.1.18}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.18}Varianz in Java}{11}{lstlisting.1.18}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.4}Echte Funktionstypen in Java-TX}{11}{section.1.4}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\BKM@entry{id=16,dest={73656374696F6E2E312E35},srcline={333}}{5C3337365C3337375C303030315C3030302E5C303030355C3030305C3034305C303030475C3030304E5C303030555C3030305C3034305C3030304D5C303030615C3030306B5C30303065}
|
||||
\abx@aux@cite{0}{stallman_gnu_2004}
|
||||
\abx@aux@segm{0}{0}{stallman_gnu_2004}
|
||||
\abx@aux@cite{0}{stallman_gnu_2004}
|
||||
\abx@aux@segm{0}{0}{stallman_gnu_2004}
|
||||
\abx@aux@cite{0}{stallman_gnu_2004}
|
||||
\abx@aux@segm{0}{0}{stallman_gnu_2004}
|
||||
\abx@aux@cite{0}{stallman_gnu_2004}
|
||||
\abx@aux@segm{0}{0}{stallman_gnu_2004}
|
||||
\abx@aux@cite{0}{stallman_gnu_2004}
|
||||
\abx@aux@segm{0}{0}{stallman_gnu_2004}
|
||||
\abx@aux@cite{0}{stallman_gnu_2004}
|
||||
\abx@aux@segm{0}{0}{stallman_gnu_2004}
|
||||
\newlabel{lst:subtyping_of_function_types}{{1.19}{12}{Subtypisierung von Funktionstypen in Java-TX}{lstlisting.1.19}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.19}Subtypisierung von Funktionstypen in Java-TX}{12}{lstlisting.1.19}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\newlabel{lst:lambda_with_function_type}{{1.20}{12}{Lambda Ausdruck ohne Typkontext}{lstlisting.1.20}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.20}Lambda Ausdruck ohne Typkontext}{12}{lstlisting.1.20}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.5}GNU Make}{12}{section.1.5}\protected@file@percent }
|
||||
\newlabel{sec:make}{{1.5}{12}{GNU Make}{section.1.5}{}}
|
||||
\AC@undonewlabel{acro:GNU}
|
||||
\newlabel{acro:GNU}{{1.5}{12}{GNU Make}{section*.8}{}}
|
||||
\acronymused{GNU}
|
||||
\newlabel{lst:make_rule}{{1.21}{12}{Aufbau einer Makefile-Regel aus {\cite {stallman_gnu_2004}[S.3]}}{lstlisting.1.21}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.21}Aufbau einer Makefile-Regel aus {\blx@tocontentsinit {0}\cite {stallman_gnu_2004}[S.3]}}{12}{lstlisting.1.21}\protected@file@percent }
|
||||
\abx@aux@cite{0}{stallman_gnu_2004}
|
||||
\abx@aux@segm{0}{0}{stallman_gnu_2004}
|
||||
\abx@aux@cite{0}{stallman_gnu_2004}
|
||||
\abx@aux@segm{0}{0}{stallman_gnu_2004}
|
||||
\abx@aux@cite{0}{jetbrains_java_2023}
|
||||
\abx@aux@segm{0}{0}{jetbrains_java_2023}
|
||||
\newlabel{lst:sample_makefile}{{1.22}{13}{Beispiel eines Makefiles aus {\cite {stallman_gnu_2004}[S.4]}}{lstlisting.1.22}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1.22}Beispiel eines Makefiles aus {\blx@tocontentsinit {0}\cite {stallman_gnu_2004}[S.4]}}{13}{lstlisting.1.22}\protected@file@percent }
|
||||
\acronymused{GNU}
|
||||
\BKM@entry{id=17,dest={73656374696F6E2E312E36},srcline={376}}{5C3337365C3337375C303030315C3030302E5C303030365C3030305C3034305C303030535C303030655C3030306C5C303030625C303030735C303030745C3030306B5C3030306F5C3030306D5C303030705C303030695C3030306C5C303030695C303030655C303030725C303030655C3030306E5C303030645C303030655C3030305C3034305C303030435C3030306F5C3030306D5C303030705C303030695C3030306C5C303030655C30303072}
|
||||
\abx@aux@cite{0}{noauthor_openjdk_nodate-1}
|
||||
\abx@aux@segm{0}{0}{noauthor_openjdk_nodate-1}
|
||||
\abx@aux@cite{0}{noauthor_gcc--cxx_nodate}
|
||||
\abx@aux@segm{0}{0}{noauthor_gcc--cxx_nodate}
|
||||
\abx@aux@cite{0}{stallman_using_2024}
|
||||
\abx@aux@segm{0}{0}{stallman_using_2024}
|
||||
\abx@aux@cite{0}{terry_compilers_1997}
|
||||
\abx@aux@segm{0}{0}{terry_compilers_1997}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1.6}Selbstkompilierende Compiler}{14}{section.1.6}\protected@file@percent }
|
||||
\AC@undonewlabel{acro:GCC}
|
||||
\newlabel{acro:GCC}{{1.6}{14}{Selbstkompilierende Compiler}{section*.9}{}}
|
||||
\acronymused{GCC}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {1.1}{\ignorespaces Selbstkompilierender Compiler in Java-TX}}{15}{figure.1.1}\protected@file@percent }
|
||||
\newlabel{fig:self_compiling_compiler_java_tx}{{1.1}{15}{Selbstkompilierender Compiler in Java-TX}{figure.1.1}{}}
|
||||
\BKM@entry{id=18,dest={636861707465722E32},srcline={3}}{5C3337365C3337375C303030325C3030305C3034305C303030415C303030755C303030665C303030625C303030615C303030755C3030305C3034305C303030645C303030655C303030725C3030305C3034305C303030555C3030306D5C303030675C303030655C303030625C303030755C3030306E5C30303067}
|
||||
\BKM@entry{id=19,dest={73656374696F6E2E322E31},srcline={5}}{5C3337365C3337375C303030325C3030302E5C303030315C3030305C3034305C303030565C3030306F5C303030725C303030615C303030755C303030735C303030735C303030655C303030745C3030307A5C303030755C3030306E5C303030675C303030655C3030306E}
|
||||
\abx@aux@cite{0}{plumicke_java-tx_2022}
|
||||
\abx@aux@segm{0}{0}{plumicke_java-tx_2022}
|
||||
\pp@pagectr{footnote}{5}{26}{16}
|
||||
\@writefile{toc}{\contentsline {chapter}{\numberline {2}Aufbau der Umgebung}{16}{chapter.2}\protected@file@percent }
|
||||
\@writefile{lof}{\addvspace {10\p@ }}
|
||||
\@writefile{lot}{\addvspace {10\p@ }}
|
||||
\@writefile{lol}{\addvspace {10\p@ }}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2.1}Voraussetzungen}{16}{section.2.1}\protected@file@percent }
|
||||
\newlabel{sec:prequisites}{{2.1}{16}{Voraussetzungen}{section.2.1}{}}
|
||||
\acronymused{Java-TX}
|
||||
\pp@pagectr{footnote}{6}{26}{16}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\pp@pagectr{footnote}{7}{26}{16}
|
||||
\acronymused{Java-TX}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {2.1}{\ignorespaces Zirkuläre Abhängigkeiten zwischen Java und \ac {Java-TX} Dateien}}{16}{figure.2.1}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\newlabel{fig:circular_dependency}{{2.1}{16}{Zirkuläre Abhängigkeiten zwischen Java und \ac {Java-TX} Dateien}{figure.2.1}{}}
|
||||
\acronymused{Java-TX}
|
||||
\abx@aux@cite{0}{noauthor_maven_nodate}
|
||||
\abx@aux@segm{0}{0}{noauthor_maven_nodate}
|
||||
\BKM@entry{id=20,dest={73656374696F6E2E322E32},srcline={54}}{5C3337365C3337375C303030325C3030302E5C303030325C3030305C3034305C3030304B5C3030306F5C3030306D5C303030705C303030695C3030306C5C303030695C303030655C303030725C303030755C3030306E5C303030675C3030305C3034305C3030306D5C303030695C303030745C3030305C3034305C3030304D5C303030615C3030306B5C30303065}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {2.2}{\ignorespaces Zirkuläre Abhängigkeiten zwischen Java und \ac {Java-TX} Dateien behoben}}{17}{figure.2.2}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\newlabel{fig:circular_dependency_resolved}{{2.2}{17}{Zirkuläre Abhängigkeiten zwischen Java und \ac {Java-TX} Dateien behoben}{figure.2.2}{}}
|
||||
\acronymused{Java-TX}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2.2}Kompilierung mit Make}{18}{section.2.2}\protected@file@percent }
|
||||
\acronymused{GNU}
|
||||
\newlabel{lst:makefile}{{2.1}{18}{Makefile für die Kompilierung des \JTXCinJTX {}}{lstlisting.2.1}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {2.1}Makefile für die Kompilierung des \glqq {}Java-TX Compiler in Java-TX\grqq {}{}}{18}{lstlisting.2.1}\protected@file@percent }
|
||||
\abx@aux@cite{0}{stallman_gnu_2004}
|
||||
\abx@aux@segm{0}{0}{stallman_gnu_2004}
|
||||
\abx@aux@cite{0}{stallman_gnu_2004}
|
||||
\abx@aux@segm{0}{0}{stallman_gnu_2004}
|
||||
\abx@aux@cite{0}{stallman_gnu_2004}
|
||||
\abx@aux@segm{0}{0}{stallman_gnu_2004}
|
||||
\abx@aux@cite{0}{stallman_gnu_2004}
|
||||
\abx@aux@segm{0}{0}{stallman_gnu_2004}
|
||||
\acronymused{GNU}
|
||||
\acronymused{Java-TX}
|
||||
\abx@aux@cite{0}{stallman_gnu_2004}
|
||||
\abx@aux@segm{0}{0}{stallman_gnu_2004}
|
||||
\BKM@entry{id=21,dest={73756273656374696F6E2E322E322E31},srcline={113}}{5C3337365C3337375C303030325C3030302E5C303030325C3030302E5C303030315C3030305C3034305C303030505C303030655C303030725C303030665C3030306F5C303030725C3030306D5C303030615C3030306E5C303030635C303030655C303030705C303030725C3030306F5C303030625C3030306C5C303030655C3030306D5C30303065}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.1}Performanceprobleme}{20}{subsection.2.2.1}\protected@file@percent }
|
||||
\newlabel{sec:performance}{{2.2.1}{20}{Performanceprobleme}{subsection.2.2.1}{}}
|
||||
\AC@undonewlabel{acro:JVM}
|
||||
\newlabel{acro:JVM}{{2.2.1}{20}{Performanceprobleme}{section*.10}{}}
|
||||
\acronymused{JVM}
|
||||
\BKM@entry{id=22,dest={73656374696F6E2E322E33},srcline={139}}{5C3337365C3337375C303030325C3030302E5C303030335C3030305C3034305C3030304B5C3030306F5C3030306D5C303030705C303030695C3030306C5C303030695C303030655C303030725C303030755C3030306E5C303030675C3030305C3034305C3030306D5C303030695C303030745C3030305C3034305C303030425C303030615C303030735C30303068}
|
||||
\@writefile{lot}{\contentsline {table}{\numberline {2.1}{\ignorespaces Kompilierzeiten des \glqq {}Java-TX Compiler\grqq {}{} mit \gls {javac}\FN@sf@gobble@opt {Diese Zeiten wurden mit einem Intel i5-12400F Prozessor und 16GB RAM auf einem Linux Rechner mit dem \ac {GNU} Time Befehl gemessen. Jeder Test wurde 5x durchgeführt. Der Durchschnitt wurde aus allen Durchläufen berechnet.}}}{21}{table.2.1}\protected@file@percent }
|
||||
\pp@pagectr{footnote}{8}{31}{21}
|
||||
\newlabel{tab:compiletimes_javac}{{2.1}{21}{Kompilierzeiten des \JTXC {} mit \gls {javac}\footnote {Diese Zeiten wurden mit einem Intel i5-12400F Prozessor und 16GB RAM auf einem Linux Rechner mit dem \ac {GNU} Time Befehl gemessen. Jeder Test wurde 5x durchgeführt. Der Durchschnitt wurde aus allen Durchläufen berechnet.}}{table.2.1}{}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2.3}Kompilierung mit Bash}{21}{section.2.3}\protected@file@percent }
|
||||
\newlabel{sec:script}{{2.3}{21}{Kompilierung mit Bash}{section.2.3}{}}
|
||||
\AC@undonewlabel{acro:Bash}
|
||||
\newlabel{acro:Bash}{{2.3}{21}{Kompilierung mit Bash}{section*.11}{}}
|
||||
\acronymused{Bash}
|
||||
\AC@undonewlabel{acro:WSL}
|
||||
\newlabel{acro:WSL}{{2.3}{21}{Kompilierung mit Bash}{section*.12}{}}
|
||||
\acronymused{WSL}
|
||||
\acronymused{Java-TX}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {2.3}{\ignorespaces Dateistruktur des Projekts}}{22}{figure.2.3}\protected@file@percent }
|
||||
\newlabel{fig:folder_structure}{{2.3}{22}{Dateistruktur des Projekts}{figure.2.3}{}}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\BKM@entry{id=23,dest={73656374696F6E2E322E34},srcline={219}}{5C3337365C3337375C303030325C3030302E5C303030345C3030305C3034305C303030545C303030655C303030735C303030745C30303073}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2.4}Tests}{23}{section.2.4}\protected@file@percent }
|
||||
\newlabel{sec:tests}{{2.4}{23}{Tests}{section.2.4}{}}
|
||||
\AC@undonewlabel{acro:IDE}
|
||||
\newlabel{acro:IDE}{{2.4}{23}{Tests}{section*.13}{}}
|
||||
\acronymused{IDE}
|
||||
\acronymused{Java-TX}
|
||||
\newlabel{lst:testscript}{{2.2}{24}{Skript zum Kompilieren und Ausführen der Tests}{lstlisting.2.2}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {2.2}Skript zum Kompilieren und Ausführen der Tests}{24}{lstlisting.2.2}\protected@file@percent }
|
||||
\BKM@entry{id=24,dest={636861707465722E33},srcline={3}}{5C3337365C3337375C303030335C3030305C3034305C303030415C303030755C303030665C303030675C303030655C303030745C303030725C303030655C303030745C303030655C3030306E5C303030655C3030305C3034305C303030505C303030725C3030306F5C303030625C3030306C5C303030655C3030306D5C30303065}
|
||||
\BKM@entry{id=25,dest={73656374696F6E2E332E31},srcline={34}}{5C3337365C3337375C303030335C3030302E5C303030315C3030305C3034305C3030304E5C303030655C303030755C303030655C3030305C3034305C303030465C303030755C3030306E5C3030306B5C303030745C303030695C3030306F5C3030306E5C303030655C3030306E}
|
||||
\pp@pagectr{footnote}{9}{36}{26}
|
||||
\@writefile{toc}{\contentsline {chapter}{\numberline {3}Aufgetretene Probleme}{26}{chapter.3}\protected@file@percent }
|
||||
\@writefile{lof}{\addvspace {10\p@ }}
|
||||
\@writefile{lot}{\addvspace {10\p@ }}
|
||||
\@writefile{lol}{\addvspace {10\p@ }}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Gefundene Probleme und neue Funktionen}}{26}{figure.3.1}\protected@file@percent }
|
||||
\newlabel{fig:problems_plot}{{3.1}{26}{Gefundene Probleme und neue Funktionen}{figure.3.1}{}}
|
||||
\BKM@entry{id=26,dest={73756273656374696F6E2E332E312E31},srcline={37}}{5C3337365C3337375C303030335C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030465C3030306F5C303030725C303030455C303030615C303030635C303030685C3030305C3034305C303030535C303030635C303030685C3030306C5C303030655C303030695C303030665C30303065}
|
||||
\abx@aux@cite{0}{noauthor_for-each_nodate}
|
||||
\abx@aux@segm{0}{0}{noauthor_for-each_nodate}
|
||||
\BKM@entry{id=27,dest={73756273656374696F6E2E332E312E32},srcline={63}}{5C3337365C3337375C303030335C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030575C303030655C303030695C303030745C303030655C303030725C303030655C3030305C3034305C3030306E5C303030655C303030755C303030655C3030305C3034305C303030465C303030755C3030306E5C3030306B5C303030745C303030695C3030306F5C3030306E5C303030655C3030306E}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Neue Funktionen}{27}{section.3.1}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}For\-Each Schleife}{27}{subsection.3.1.1}\protected@file@percent }
|
||||
\newlabel{lst:for_each_java}{{3.1}{27}{For-Each Schleife in Java}{lstlisting.3.1}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.1}For-Each Schleife in Java}{27}{lstlisting.3.1}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\newlabel{lst:for_each_javatx}{{3.2}{27}{For-Each Schleife in Java-TX}{lstlisting.3.2}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.2}For-Each Schleife in Java-TX}{27}{lstlisting.3.2}\protected@file@percent }
|
||||
\BKM@entry{id=28,dest={73656374696F6E2E332E32},srcline={84}}{5C3337365C3337375C303030335C3030302E5C303030325C3030305C3034305C303030425C303030755C303030675C30303073}
|
||||
\BKM@entry{id=29,dest={73756273656374696F6E2E332E322E31},srcline={87}}{5C3337365C3337375C303030335C3030302E5C303030325C3030302E5C303030315C3030305C3034305C3030304A5C303030565C3030304D5C3030305C3034305C303030435C3030306C5C303030615C303030735C303030735C303030705C303030615C303030745C303030685C3030305C3034305C303030775C303030695C303030725C303030645C3030305C3034305C303030765C3030306F5C3030306E5C3030305C3034305C3034305C3033365C3030304A5C303030615C303030765C303030615C3030302D5C303030545C303030585C3030305C3034305C303030435C3030306F5C3030306D5C303030705C303030695C3030306C5C303030655C303030725C3034305C3033345C3030305C3034305C303030625C303030655C303030615C303030635C303030685C303030745C303030655C30303074}
|
||||
\abx@aux@cite{0}{baeldung_class_2024}
|
||||
\abx@aux@segm{0}{0}{baeldung_class_2024}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.2}Weitere neue Funktionen}{28}{subsection.3.1.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Bugs}{28}{section.3.2}\protected@file@percent }
|
||||
\abx@aux@cite{0}{baeldung_class_2024}
|
||||
\abx@aux@segm{0}{0}{baeldung_class_2024}
|
||||
\abx@aux@cite{0}{nero_all_2023}
|
||||
\abx@aux@segm{0}{0}{nero_all_2023}
|
||||
\abx@aux@cite{0}{nero_all_2023}
|
||||
\abx@aux@segm{0}{0}{nero_all_2023}
|
||||
\abx@aux@cite{0}{nero_all_2023}
|
||||
\abx@aux@segm{0}{0}{nero_all_2023}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}JVM Classpath wird von \glqq {}Java-TX Compiler\grqq {}{} beachtet}{29}{subsection.3.2.1}\protected@file@percent }
|
||||
\pp@pagectr{footnote}{10}{39}{29}
|
||||
\acronymused{JVM}
|
||||
\AC@undonewlabel{acro:JDK}
|
||||
\newlabel{acro:JDK}{{3.2.1}{29}{JVM Classpath wird von \JTXC {} beachtet}{section*.14}{}}
|
||||
\acronymused{JDK}
|
||||
\acronymused{JVM}
|
||||
\acronymused{JDK}
|
||||
\acronymused{JDK}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces Die Classloader Hierarchie des \glqq {}Java-TX Compiler\grqq {}{} (vgl. \blx@tocontentsinit {0}\cite {nero_all_2023})}}{30}{figure.3.2}\protected@file@percent }
|
||||
\newlabel{fig:classloader}{{3.2}{30}{Die Classloader Hierarchie des \JTXC {} (vgl. \cite {nero_all_2023})}{figure.3.2}{}}
|
||||
\acronymused{JVM}
|
||||
\pp@pagectr{footnote}{11}{40}{30}
|
||||
\acronymused{JVM}
|
||||
\newlabel{lst:jvm_classpath}{{3.3}{30}{Verwenden von Klassen im JVM Classpath}{lstlisting.3.3}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.3}Verwenden von Klassen im JVM Classpath}{30}{lstlisting.3.3}\protected@file@percent }
|
||||
\BKM@entry{id=30,dest={73756273656374696F6E2E332E322E32},srcline={201}}{5C3337365C3337375C303030335C3030302E5C303030325C3030302E5C303030325C3030305C3034305C3030304B5C3030306F5C3030306D5C303030705C303030615C303030745C303030695C303030625C303030695C3030306C5C303030695C303030745C3030305C3334345C303030745C3030305C3034305C303030765C3030306F5C3030306E5C3030305C3034305C3030304A5C303030615C303030765C303030615C3030302D5C303030545C303030585C3030305C3034305C303030465C303030755C3030306E5C3030306B5C303030745C303030695C3030306F5C3030306E5C303030735C303030745C303030795C303030705C303030655C3030306E5C3030305C3034305C303030755C3030306E5C303030645C3030305C3034305C303030665C303030755C3030306E5C3030306B5C303030745C303030695C3030306F5C3030306E5C303030615C3030306C5C303030655C3030306E5C3030305C3034305C303030495C3030306E5C303030745C303030655C303030725C303030665C303030615C303030635C303030655C30303073}
|
||||
\abx@aux@cite{0}{plumicke_introducing_2017}
|
||||
\abx@aux@segm{0}{0}{plumicke_introducing_2017}
|
||||
\abx@aux@cite{0}{baeldung_java_2016}
|
||||
\abx@aux@segm{0}{0}{baeldung_java_2016}
|
||||
\abx@aux@cite{0}{softwarealchemy_streamline_2024}
|
||||
\abx@aux@segm{0}{0}{softwarealchemy_streamline_2024}
|
||||
\acronymused{JVM}
|
||||
\acronymused{JDK}
|
||||
\acronymused{JDK}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {3.3}{\ignorespaces Die Classloader Hierarchie des \glqq {}Java-TX Compiler\grqq {}{} ohne den ApplicationClassLoader}}{31}{figure.3.3}\protected@file@percent }
|
||||
\newlabel{fig:classloader_no_application}{{3.3}{31}{Die Classloader Hierarchie des \JTXC {} ohne den ApplicationClassLoader}{figure.3.3}{}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.2}Kompatibilität von Java-TX Funktionstypen und funktionalen Interfaces}{31}{subsection.3.2.2}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\newlabel{lst:java_functional_interface}{{3.4}{32}{Verwendung der Stream API in Java}{lstlisting.3.4}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.4}Verwendung der Stream API in Java}{32}{lstlisting.3.4}\protected@file@percent }
|
||||
\pp@pagectr{footnote}{12}{42}{32}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{JVM}
|
||||
\acronymused{Java-TX}
|
||||
\newlabel{lst:javatx_not_working_1}{{3.5}{33}{Aktuell nicht lauffähiger \ac {Java-TX} Code I}{lstlisting.3.5}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.5}Aktuell nicht lauffähiger \ac {Java-TX} Code I}{33}{lstlisting.3.5}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\BKM@entry{id=31,dest={73756273656374696F6E2E332E322E33},srcline={292}}{5C3337365C3337375C303030335C3030302E5C303030325C3030302E5C303030335C3030305C3034305C3030305C3333345C303030625C303030655C303030725C303030735C303030635C303030685C303030725C303030655C303030695C303030625C303030655C3030306E5C3030305C3034305C303030765C3030306F5C3030306E5C3030305C3034305C3030304D5C303030655C303030745C303030685C3030306F5C303030645C303030655C3030306E5C3030305C3034305C3030306D5C303030695C303030745C3030305C3034305C303030705C303030725C303030695C3030306D5C303030695C303030745C303030695C303030765C303030655C3030306E5C3030305C3034305C303030445C303030615C303030745C303030655C3030306E5C303030745C303030795C303030705C303030655C3030306E}
|
||||
\newlabel{lst:javatx_not_working_2}{{3.6}{34}{Aktuell nicht lauffähiger \ac {Java-TX} Code II}{lstlisting.3.6}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.6}Aktuell nicht lauffähiger \ac {Java-TX} Code II}{34}{lstlisting.3.6}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.3}Überschreiben von Methoden mit primitiven Datentypen}{34}{subsection.3.2.3}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\abx@aux@cite{0}{naftalin_java_2007}
|
||||
\abx@aux@segm{0}{0}{naftalin_java_2007}
|
||||
\abx@aux@cite{0}{naftalin_java_2007}
|
||||
\abx@aux@segm{0}{0}{naftalin_java_2007}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {3.4}{\ignorespaces Primitive Datentypen in Java-TX}}{35}{figure.3.4}\protected@file@percent }
|
||||
\newlabel{fig:primitive_types_javatx}{{3.4}{35}{Primitive Datentypen in Java-TX}{figure.3.4}{}}
|
||||
\acronymused{Java-TX}
|
||||
\pp@pagectr{footnote}{13}{45}{35}
|
||||
\newlabel{lst:primitive_types}{{3.7}{35}{Überschreiben von Methoden mit primitiven Datentypen in Java-TX}{lstlisting.3.7}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.7}Überschreiben von Methoden mit primitiven Datentypen in Java-TX}{35}{lstlisting.3.7}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\newlabel{lst:primitive_types_infer}{{3.8}{35}{Ergebnis der Typinferenz für die Methode \texttt {hashCode} in Java-TX}{lstlisting.3.8}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.8}Ergebnis der Typinferenz für die Methode \texttt {hashCode} in Java-TX}{35}{lstlisting.3.8}\protected@file@percent }
|
||||
\newlabel{lst:covariant_overloading}{{3.9}{36}{Kovariante Methodenüberladung in Java}{lstlisting.3.9}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.9}Kovariante Methodenüberladung in Java}{36}{lstlisting.3.9}\protected@file@percent }
|
||||
\BKM@entry{id=32,dest={73756273656374696F6E2E332E322E34},srcline={395}}{5C3337365C3337375C303030335C3030302E5C303030325C3030302E5C303030345C3030305C3034305C3030304B5C3030306F5C303030725C303030725C303030655C3030306B5C303030745C303030655C303030725C3030305C3034305C3030304D5C303030655C303030745C303030685C3030306F5C303030645C303030655C3030306E5C303030615C303030755C303030665C303030725C303030755C303030665C3030305C3034305C303030665C3030305C3337345C303030725C3030305C3034305C3030305C3337345C303030625C303030655C303030725C3030306C5C303030615C303030645C303030655C3030306E5C303030655C3030305C3034305C3030304D5C303030655C303030745C303030685C3030306F5C303030645C303030655C3030306E5C3030305C3034305C3030306D5C303030695C303030745C3030305C3034305C303030535C303030755C303030625C303030745C303030795C303030705C303030655C3030306E5C3030305C3034305C303030615C3030306C5C303030735C3030305C3034305C303030505C303030615C303030725C303030615C3030306D5C303030655C303030745C303030655C30303072}
|
||||
\abx@aux@cite{0}{naftalin_java_2007}
|
||||
\abx@aux@segm{0}{0}{naftalin_java_2007}
|
||||
\abx@aux@cite{0}{gosling_java_2005}
|
||||
\abx@aux@segm{0}{0}{gosling_java_2005}
|
||||
\newlabel{lst:covariant_overloading_bytecode}{{3.10}{37}{Dekompilierter Bytecode der Klasse A}{lstlisting.3.10}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.10}Dekompilierter Bytecode der Klasse A}{37}{lstlisting.3.10}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.4}Korrekter Methodenaufruf für überladene Methoden mit Subtypen als Parameter}{37}{subsection.3.2.4}\protected@file@percent }
|
||||
\BKM@entry{id=33,dest={73756273656374696F6E2E332E322E35},srcline={427}}{5C3337365C3337375C303030335C3030302E5C303030325C3030302E5C303030355C3030305C3034305C303030575C303030655C303030695C303030745C303030655C303030725C303030655C3030305C3034305C303030425C303030755C303030675C303030735C3030305C3034305C303030755C3030306E5C303030645C3030305C3034305C303030665C303030655C303030685C3030306C5C303030655C3030306E5C303030645C303030655C3030305C3034305C303030465C303030655C303030615C303030745C303030755C303030725C303030655C30303073}
|
||||
\newlabel{lst:overloaded_methods}{{3.11}{38}{Überladene Methoden in Java}{lstlisting.3.11}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.11}Überladene Methoden in Java}{38}{lstlisting.3.11}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.5}Weitere Bugs und fehlende Features}{39}{subsection.3.2.5}\protected@file@percent }
|
||||
\BKM@entry{id=34,dest={636861707465722E34},srcline={3}}{5C3337365C3337375C303030345C3030305C3034305C303030565C3030306F5C303030725C303030745C303030655C303030695C3030306C5C303030655C3030305C3034305C303030695C3030306E5C3030305C3034305C303030645C303030655C303030725C3030305C3034305C303030505C303030725C303030615C303030785C303030695C30303073}
|
||||
\abx@aux@cite{0}{plumicke_java-tx_2022}
|
||||
\abx@aux@segm{0}{0}{plumicke_java-tx_2022}
|
||||
\abx@aux@cite{0}{plumicke_java-tx_2022}
|
||||
\abx@aux@segm{0}{0}{plumicke_java-tx_2022}
|
||||
\pp@pagectr{footnote}{14}{50}{40}
|
||||
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Vorteile in der Praxis}{40}{chapter.4}\protected@file@percent }
|
||||
\@writefile{lof}{\addvspace {10\p@ }}
|
||||
\@writefile{lot}{\addvspace {10\p@ }}
|
||||
\@writefile{lol}{\addvspace {10\p@ }}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\pp@pagectr{footnote}{15}{50}{40}
|
||||
\newlabel{lst:prinzipal_type_example}{{4.1}{40}{Beispielklasse aus dem \JTXC {}}{lstlisting.4.1}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {4.1}Beispielklasse aus dem \glqq {}Java-TX Compiler\grqq {}{}}{40}{lstlisting.4.1}\protected@file@percent }
|
||||
\abx@aux@cite{0}{noauthor_java_nodate-2}
|
||||
\abx@aux@segm{0}{0}{noauthor_java_nodate-2}
|
||||
\abx@aux@cite{0}{noauthor_java_nodate-2}
|
||||
\abx@aux@segm{0}{0}{noauthor_java_nodate-2}
|
||||
\newlabel{lst:prinzipal_type_example_javatx}{{4.2}{41}{\autoref {lst:prinzipal_type_example} ohne Typinformationen}{lstlisting.4.2}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {4.2}\autoref {lst:prinzipal_type_example} ohne Typinformationen}{41}{lstlisting.4.2}\protected@file@percent }
|
||||
\pp@pagectr{footnote}{16}{51}{41}
|
||||
\abx@aux@cite{0}{noauthor_for-each_nodate}
|
||||
\abx@aux@segm{0}{0}{noauthor_for-each_nodate}
|
||||
\abx@aux@cite{0}{naftalin_java_2007}
|
||||
\abx@aux@segm{0}{0}{naftalin_java_2007}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces Vererbungshierarchie von java.util.List ab Java 21 \blx@tocontentsinit {0}\cite {noauthor_java_nodate-2}}}{42}{figure.4.1}\protected@file@percent }
|
||||
\newlabel{fig:java_21_collections}{{4.1}{42}{Vererbungshierarchie von java.util.List ab Java 21 \cite {noauthor_java_nodate-2}}{figure.4.1}{}}
|
||||
\newlabel{lst:prinzipal_type_example_javatx_infered}{{4.3}{42}{Inferierte Typen für \autoref {lst:prinzipal_type_example_javatx}}{lstlisting.4.3}{}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {4.3}Inferierte Typen für \autoref {lst:prinzipal_type_example_javatx}}{42}{lstlisting.4.3}\protected@file@percent }
|
||||
\abx@aux@cite{0}{stadelmeier_java_2015}
|
||||
\abx@aux@segm{0}{0}{stadelmeier_java_2015}
|
||||
\abx@aux@cite{0}{plumicke_java-tx_2022}
|
||||
\abx@aux@segm{0}{0}{plumicke_java-tx_2022}
|
||||
\acronymused{Java-TX}
|
||||
\BKM@entry{id=35,dest={636861707465722E35},srcline={1}}{5C3337365C3337375C303030355C3030305C3034305C303030465C303030615C3030307A5C303030695C303030745C3030305C3034305C303030755C3030306E5C303030645C3030305C3034305C303030415C303030755C303030735C303030625C3030306C5C303030695C303030635C3030306B}
|
||||
\BKM@entry{id=36,dest={73656374696F6E2E352E31},srcline={2}}{5C3337365C3337375C303030355C3030302E5C303030315C3030305C3034305C303030465C303030615C3030307A5C303030695C30303074}
|
||||
\BKM@entry{id=37,dest={73656374696F6E2E352E32},srcline={17}}{5C3337365C3337375C303030355C3030302E5C303030325C3030305C3034305C303030415C303030755C303030735C303030625C3030306C5C303030695C303030635C3030306B}
|
||||
\abx@aux@cite{0}{noauthor_raw_nodate}
|
||||
\abx@aux@segm{0}{0}{noauthor_raw_nodate}
|
||||
\abx@aux@cite{0}{naftalin_java_2007}
|
||||
\abx@aux@segm{0}{0}{naftalin_java_2007}
|
||||
\abx@aux@cite{0}{noauthor_string_nodate}
|
||||
\abx@aux@segm{0}{0}{noauthor_string_nodate}
|
||||
\pp@pagectr{footnote}{17}{54}{44}
|
||||
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Fazit und Ausblick}{44}{chapter.5}\protected@file@percent }
|
||||
\@writefile{lof}{\addvspace {10\p@ }}
|
||||
\@writefile{lot}{\addvspace {10\p@ }}
|
||||
\@writefile{lol}{\addvspace {10\p@ }}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {5.1}Fazit}{44}{section.5.1}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces Verhältnis der Java und \ac {Java-TX} Dateien im \glqq {}Java-TX Compiler in Java-TX\grqq {}}}{44}{figure.5.1}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\newlabel{fig:distribution}{{5.1}{44}{Verhältnis der Java und \ac {Java-TX} Dateien im \JTXCinJTX }{figure.5.1}{}}
|
||||
\acronymused{Java-TX}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {5.2}Ausblick}{45}{section.5.2}\protected@file@percent }
|
||||
\acronymused{Java-TX}
|
||||
\pp@pagectr{footnote}{18}{55}{45}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\acronymused{Java-TX}
|
||||
\BKM@entry{id=38,dest={636861707465722A2E3135},srcline={97}}{5C3337365C3337375C3030304C5C303030695C303030745C303030655C303030725C303030615C303030745C303030755C30303072}
|
||||
\pp@pagectr{footnote}{19}{56}{46}
|
||||
\@writefile{toc}{\contentsline {chapter}{\nonumberline Literatur}{46}{chapter*.15}\protected@file@percent }
|
||||
\@writefile{lof}{\addvspace {10\p@ }}
|
||||
\@writefile{lot}{\addvspace {10\p@ }}
|
||||
\@writefile{lol}{\addvspace {10\p@ }}
|
||||
\BKM@entry{id=39,dest={636861707465722A2E3136},srcline={3}}{5C3337365C3337375C303030415C3030306E5C303030685C303030615C3030306E5C30303067}
|
||||
\BKM@entry{id=40,dest={73656374696F6E2E416C7068302E31},srcline={5}}{5C3337365C3337375C3030302E5C303030315C3030305C3034305C303030535C3030306F5C303030755C303030725C303030635C303030655C303030635C3030306F5C303030645C303030655C3030305C3034305C303030645C303030655C303030735C3030305C3034305C303030425C303030615C303030735C303030685C3030305C3034305C303030535C3030306B5C303030725C303030695C303030705C303030745C303030735C3030305C3034305C3030307A5C303030755C303030725C3030305C3034305C3030304B5C3030306F5C3030306D5C303030705C303030695C3030306C5C303030695C303030655C303030725C303030755C3030306E5C30303067}
|
||||
\pp@pagectr{footnote}{20}{61}{51}
|
||||
\@writefile{toc}{\contentsline {chapter}{\nonumberline Anhang}{51}{chapter*.16}\protected@file@percent }
|
||||
\@writefile{lof}{\addvspace {10\p@ }}
|
||||
\@writefile{lot}{\addvspace {10\p@ }}
|
||||
\@writefile{lol}{\addvspace {10\p@ }}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {.1}Sourcecode des Bash Skripts zur Kompilierung}{51}{section.Alph0.1}\protected@file@percent }
|
||||
\newlabel{app:bash}{{.1}{51}{Sourcecode des Bash Skripts zur Kompilierung}{section.Alph0.1}{}}
|
||||
\abx@aux@read@bbl@mdfivesum{DF5F5D175C269048B897CEF96297F0D6}
|
||||
\abx@aux@defaultrefcontext{0}{baeldung_class_2024}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{baeldung_java_2016}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{buckley_java_2004}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{cimadamore_jep_2011}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{darcy_java_2010}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{darcy_jep_2011}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{noauthor_gcc--cxx_nodate}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{goetz_jep_2016}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{goetz_java_2010}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{gosling_java_2005}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{gosling_java_2014}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{goos_variance-based_2002}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{noauthor_java_nodate-2}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{jetbrains_java_2023}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{marlow_haskell_2010}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{noauthor_maven_nodate}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{naftalin_java_2007}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{nero_all_2023}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{noauthor_openjdk_nodate-1}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{noauthor_openjdk_nodate}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{oracle_type_nodate}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{pierce_types_2002}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{piquerez_variances_nodate}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{plumicke_introducing_2017}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{plumicke_java-tx_2022}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{noauthor_raw_nodate}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{softwarealchemy_streamline_2024}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{stadelmeier_java_2015}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{stallman_using_2024}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{stallman_gnu_2004}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{noauthor_string_nodate}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{terry_compilers_1997}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{noauthor_for-each_nodate}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{thompson_haskell_2011}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{vandevoorde_c_2010}{nty/global//global/global}
|
||||
\abx@aux@defaultrefcontext{0}{wagner_creating_2021}{nty/global//global/global}
|
||||
\global\@namedef{scr@dte@chapter@lastmaxnumwidth}{11.8799pt}
|
||||
\global\@namedef{scr@dte@section@lastmaxnumwidth}{19.71382pt}
|
||||
\global\@namedef{scr@dte@subsection@lastmaxnumwidth}{28.8528pt}
|
||||
\global\@namedef{scr@dte@table@lastmaxnumwidth}{19.71382pt}
|
||||
\global\@namedef{scr@dte@figure@lastmaxnumwidth}{19.71382pt}
|
||||
\global\@namedef{scr@dte@lstlisting@lastmaxnumwidth}{25.5888pt}
|
||||
\@writefile{toc}{\providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file}
|
||||
\@writefile{lof}{\providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file}
|
||||
\@writefile{lot}{\providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file}
|
||||
\@writefile{lol}{\providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file}
|
||||
\gdef \@abspage@last{63}
|
1333
Studienarbeit/main.bbl
Normal file
1333
Studienarbeit/main.bbl
Normal file
File diff suppressed because it is too large
Load Diff
1409
Studienarbeit/main.bbl-SAVE-ERROR
Normal file
1409
Studienarbeit/main.bbl-SAVE-ERROR
Normal file
File diff suppressed because it is too large
Load Diff
2480
Studienarbeit/main.bcf
Normal file
2480
Studienarbeit/main.bcf
Normal file
File diff suppressed because it is too large
Load Diff
2399
Studienarbeit/main.bcf-SAVE-ERROR
Normal file
2399
Studienarbeit/main.bcf-SAVE-ERROR
Normal file
File diff suppressed because it is too large
Load Diff
18
Studienarbeit/main.blg
Normal file
18
Studienarbeit/main.blg
Normal file
@ -0,0 +1,18 @@
|
||||
[0] Config.pm:307> INFO - This is Biber 2.19
|
||||
[0] Config.pm:310> INFO - Logfile is 'main.blg'
|
||||
[36] biber:340> INFO - === Sa Jul 20, 2024, 00:51:17
|
||||
[44] Biber.pm:419> INFO - Reading 'main.bcf'
|
||||
[77] Biber.pm:979> INFO - Found 36 citekeys in bib section 0
|
||||
[84] Biber.pm:4419> INFO - Processing section 0
|
||||
[90] Biber.pm:4610> INFO - Looking for bibtex file 'bibliographie.bib' for section 0
|
||||
[91] bibtex.pm:1713> INFO - LaTeX decoding ...
|
||||
[116] bibtex.pm:1519> INFO - Found BibTeX data source 'bibliographie.bib'
|
||||
[217] UCollate.pm:68> INFO - Overriding locale 'de_DE' defaults 'variable = shifted' with 'variable = non-ignorable'
|
||||
[217] UCollate.pm:68> INFO - Overriding locale 'de_DE' defaults 'normalization = NFD' with 'normalization = prenormalized'
|
||||
[217] Biber.pm:4239> INFO - Sorting list 'nty/global//global/global' of type 'entry' with template 'nty' and locale 'de_DE'
|
||||
[217] Biber.pm:4245> INFO - No sort tailoring available for locale 'de_DE'
|
||||
[232] bbl.pm:660> INFO - Writing 'main.bbl' with encoding 'UTF-8'
|
||||
[237] bbl.pm:763> INFO - Output to main.bbl
|
||||
[237] Biber.pm:131> WARN - ISBN '978-0-201-73484-2' in entry 'vandevoorde_c_2010' is invalid - run biber with '--validate_datamodel' for details.
|
||||
[237] Biber.pm:131> WARN - ISBN '978-3-540-43759-8 978-3-540-47993-2' in entry 'goos_variance-based_2002' is invalid - run biber with '--validate_datamodel' for details.
|
||||
[237] Biber.pm:133> INFO - WARNINGS: 2
|
443
Studienarbeit/main.fdb_latexmk
Normal file
443
Studienarbeit/main.fdb_latexmk
Normal file
@ -0,0 +1,443 @@
|
||||
# Fdb version 4
|
||||
["biber main"] 1721429476.80255 "main.bcf" "main.bbl" "main" 1721429638.87764 0
|
||||
"bibliographie.bib" 1721429458.02486 31508 248061fe38473db4a060ca6fe38336c5 ""
|
||||
"main.bcf" 1721429638.72638 113385 325f3e28f19435901a1a53123e38c7a4 "pdflatex"
|
||||
(generated)
|
||||
"main.bbl"
|
||||
"main.blg"
|
||||
(rewritten before read)
|
||||
["pdflatex"] 1721429635.51593 "main.tex" "main.pdf" "main" 1721429638.87788 0
|
||||
"/usr/share/texmf-dist/fonts/enc/dvips/fontawesome5/fa5brands0.enc" 1716849630 2920 d63721872b8c77041b88e51b8f7c291d ""
|
||||
"/usr/share/texmf-dist/fonts/enc/dvips/fontawesome5/fa5free1.enc" 1716849630 3042 0e2b14b9be7d01075a4c4591d5d1781b ""
|
||||
"/usr/share/texmf-dist/fonts/enc/dvips/lm/lm-ec.enc" 1716849630 2375 baa924870cfb487815765f9094cf3728 ""
|
||||
"/usr/share/texmf-dist/fonts/enc/dvips/lm/lm-mathex.enc" 1716849630 3486 c7eadf5dcc57b3b2d11736679f6636ba ""
|
||||
"/usr/share/texmf-dist/fonts/enc/dvips/lm/lm-mathit.enc" 1716849630 2405 5dcf2c1b967ee25cc46c58cd52244aed ""
|
||||
"/usr/share/texmf-dist/fonts/enc/dvips/lm/lm-mathsy.enc" 1716849630 2840 216e6e45ad352e2456e1149f28885bee ""
|
||||
"/usr/share/texmf-dist/fonts/enc/dvips/lm/lm-rm.enc" 1716849630 2327 9d6df24f9c4f7368395224341a95523a ""
|
||||
"/usr/share/texmf-dist/fonts/enc/dvips/lm/lm-ts1.enc" 1716849630 3031 6c4d3515bf7115d8518af1c9ab97ca44 ""
|
||||
"/usr/share/texmf-dist/fonts/map/fontname/texfonts.map" 1716849630 3524 cb3e574dea2d1052e39280babc910dc8 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1200.tfm" 1716849630 3584 f80ddd985bd00e29e9a6047ebd9d4781 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm" 1716849630 916 f87d7c45f9c908e672703b83b72241a3 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm" 1716849630 924 9904cf1d39e9767e7a3622f2a125a565 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm" 1716849630 928 2dc8d444221b7a635bb58038579b861a ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm" 1716849630 908 2921f8a10601f252058503cc6570e581 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm" 1716849630 940 75ac932a52f80982a9f8ea75d03a34cf ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm" 1716849630 940 228d6584342e91276bf566bcf9716b83 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1716849630 1288 655e228510b4c2a1abe905c368440826 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/fontawesome5/fa5brands0.tfm" 1716849630 1380 a61d7c2860b3f6d342213a6b9b229e9e ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/fontawesome5/fa5free1solid.tfm" 1716849630 1316 1c2ee668ea88be9bd4f39690662cc344 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmbx12.tfm" 1716849630 12088 d750ac78274fa7c9f73ba09914c04f8a ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmcsc10.tfm" 1716849630 11276 116dd5bea6621ce4a1999f96d876084c ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmr10.tfm" 1716849630 12056 7e13df7fe4cbce21b072ba7c4f4deb6e ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmr12.tfm" 1716849630 12092 7b1546e2d096cfd5dcbd4049b0b1ec2e ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmr17.tfm" 1716849630 12156 ca1ae6a3c8564e89597f1f993fba1608 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmr6.tfm" 1716849630 12048 c1068d0f4772be9b0ec447692e1d6d82 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmr7.tfm" 1716849630 12064 09aa3eeac96bf141d673bb1b0385ce55 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmr8.tfm" 1716849630 12064 a35db870f0b76c338d749c56dc030ef5 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmri12.tfm" 1716849630 17144 271aaf9ebb339934b04110dc5211fba4 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmro12.tfm" 1716849630 12216 265ff4deab161a560d37046d13363b8c ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmss12.tfm" 1716849630 11232 955a7245396175d9219648eadc654ac9 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmssbx10.tfm" 1716849630 11168 06d87f5698fd1b642d96449b7c8d90b0 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmtt10.tfm" 1716849630 1372 2ef2c2b492b3c4cd7879fe083abbb061 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmtt12.tfm" 1716849630 1368 6a60e6a5e029141041d64d339b87e533 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmtt8.tfm" 1716849630 1380 64228d979098ac090aa3f98d5aa8ad3e ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/lmex10.tfm" 1716849630 992 ce925c9346c7613270a79afbee98c070 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/lmmi10.tfm" 1716849630 1528 6d36b2385e0ca062a654de6ac59cb34f ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/lmmi12.tfm" 1716849630 1524 753b192b18f2991794f9d41a8228510b ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/lmmi5.tfm" 1716849630 1508 198f5b7b99b5769126de3a533f6fc334 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/lmmi6.tfm" 1716849630 1512 94a3fd88c6f27dbd9ecb46987e297a4e ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/lmmi7.tfm" 1716849630 1528 d5b028dd23da623848ef0645c96a1ed7 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/lmmi8.tfm" 1716849630 1520 a3fe5596932db2db2cbda300920dd4e9 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/lmsy10.tfm" 1716849630 1308 02cc510f9dd6012e5815d0c0ffbf6869 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/lmsy5.tfm" 1716849630 1296 54ed1a711e2303d5282575278e3620b0 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/lmsy6.tfm" 1716849630 1300 b0605d44c16c22d99dc001808e4f24ea ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/lmsy7.tfm" 1716849630 1304 32f22a15acc296b2a4e15698403dcb88 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/lmsy8.tfm" 1716849630 1304 cdc9a17df9ef0d2dc320eff37bbab1c4 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/rm-lmr10.tfm" 1716849630 11868 4f81e9b6033c032bdaf9884f4d7ef412 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/rm-lmr12.tfm" 1716849630 11888 6841b91e46b65cf41a49b160e6e74130 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/rm-lmr5.tfm" 1716849630 11804 aefb10c002e6492c25236524a447f969 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/rm-lmr6.tfm" 1716849630 11836 e3b6ce3e601aec94f64a536e7f4224d5 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/rm-lmr7.tfm" 1716849630 11852 5a9022f105fd1ee2797df861e79ae9a0 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/rm-lmr8.tfm" 1716849630 11864 309fd7f43e4a0ba39f6f7644d76e8edf ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ts1-lmr12.tfm" 1716849630 1596 1d4548788e389ded56d0b01b28377882 ""
|
||||
"/usr/share/texmf-dist/fonts/tfm/public/lm/ts1-lmri12.tfm" 1716849630 1756 f5780f74a46c4ea15873b1a1c70b77bc ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/fontawesome5/FontAwesome5Brands-Regular.pfb" 1716849630 204258 177851ae99767090543ae24e73c92f2f ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/fontawesome5/FontAwesome5Free-Solid.pfb" 1716849630 295323 d099723373a00cc17d5ae0c9738bb5b3 ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmbx12.pfb" 1716849630 116908 1fca96723793882c2e0160350c192fc8 ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmcsc10.pfb" 1716849630 116427 4a5b1ccaa7cce719091920a86b58608d ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmex10.pfb" 1716849630 23055 2e5b42921de910eaa97b85df04ca4891 ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmmi12.pfb" 1716849630 30696 2654571912f9cd384da9f7cb8a60c568 ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmmi8.pfb" 1716849630 30635 833ec815d446ec453a4913fc26d24cbc ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmr10.pfb" 1716849630 119235 f35b44530a1d90eb90fe15d9cba67ea0 ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmr12.pfb" 1716849630 113634 f99c44d58bae0863375faf0e1d74d612 ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmr6.pfb" 1716849630 123394 d390152bb30feeb496aaaa93299ee9ba ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmr7.pfb" 1716849630 121145 68312a933e2c689ed40ec0aba373e279 ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmr8.pfb" 1716849630 122174 a7a08406857c9530a0320a2517f60370 ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmri12.pfb" 1716849630 109265 32320cb6133d4d76bf83e27b5eb4009b ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmro12.pfb" 1716849630 125209 a5bd29c5b5feb791d0332220e4a79275 ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmssbx10.pfb" 1716849630 119663 e82fa1a58f98ccd89bdbd77311ac9cf1 ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmsy10.pfb" 1716849630 27863 09ce3735688ffde955e72da27c95b61a ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmsy7.pfb" 1716849630 27941 d1f5d03f61a46c3fcc3a2ba904ddda52 ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmsy8.pfb" 1716849630 27802 5c876bb2c4040caaf035d60bd74a86bd ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmtt10.pfb" 1716849630 113227 1010e11451afc2822c95dae77c390042 ""
|
||||
"/usr/share/texmf-dist/fonts/type1/public/lm/lmtt12.pfb" 1716849630 110323 92daea7ca7b4120bd2b54b047c93be27 ""
|
||||
"/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1716849630 71627 94eb9990bed73c364d7f53f960cc8c5b ""
|
||||
"/usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty" 1716849630 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 ""
|
||||
"/usr/share/texmf-dist/tex/generic/babel-english/english.ldf" 1716849630 7008 9ff5fdcc865b01beca2b0fe4a46231d4 ""
|
||||
"/usr/share/texmf-dist/tex/generic/babel-german/ngerman.ldf" 1716849630 2289 4c0bd5448e6c4088c5170e3997082036 ""
|
||||
"/usr/share/texmf-dist/tex/generic/babel-german/ngermanb.ldf" 1716849630 9023 ac64485babf93564615cafa0d7a314f7 ""
|
||||
"/usr/share/texmf-dist/tex/generic/babel/babel.sty" 1716849630 146276 10a40dabec03ce18494af0c3a51bcbdc ""
|
||||
"/usr/share/texmf-dist/tex/generic/babel/locale/de/babel-de.ini" 1716849630 4096 fa1802f91144b2c083d61dddf097a6d2 ""
|
||||
"/usr/share/texmf-dist/tex/generic/babel/locale/de/babel-ngerman.tex" 1716849630 336 b80d4d282e518e78a8b5f9cc543e7f94 ""
|
||||
"/usr/share/texmf-dist/tex/generic/babel/locale/en/babel-en.ini" 1716849630 3966 caeee5a9e5771d4446aa1ca9015ba1b2 ""
|
||||
"/usr/share/texmf-dist/tex/generic/babel/locale/en/babel-english.tex" 1716849630 336 ed676b5e7dfd862bc78d634f6a973f37 ""
|
||||
"/usr/share/texmf-dist/tex/generic/babel/txtbabel.def" 1716849630 6948 df63e25be1d2bc35bbad5a0141f41348 ""
|
||||
"/usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1716849630 40635 c40361e206be584d448876bba8a64a3b ""
|
||||
"/usr/share/texmf-dist/tex/generic/bitset/bitset.sty" 1716849630 33961 6b5c75130e435b2bfdb9f480a09a39f9 ""
|
||||
"/usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1716849630 8371 9d55b8bd010bc717624922fb3477d92e ""
|
||||
"/usr/share/texmf-dist/tex/generic/iftex/iftex.sty" 1716849630 7237 bdd120a32c8fdb4b433cf9ca2e7cd98a ""
|
||||
"/usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty" 1716849630 1057 525c2192b5febbd8c1f662c9468335bb ""
|
||||
"/usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty" 1716849630 8356 7bbb2c2373aa810be568c29e333da8ed ""
|
||||
"/usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty" 1716849630 31769 002a487f55041f8e805cfbf6385ffd97 ""
|
||||
"/usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1716849630 5412 d5a2436094cd7be85769db90f29250a6 ""
|
||||
"/usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1716849630 17865 1a9bd36b4f98178fa551aca822290953 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1716849630 19007 15924f7228aca6c6d184b115f4baa231 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty" 1716849630 20089 80423eac55aa175305d35b49e04fe23b ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex" 1716849630 1016 1c2b89187d12a2768764b83b4945667c ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex" 1716849630 43820 1fef971b75380574ab35a0d37fd92608 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex" 1716849630 19324 f4e4c6403dd0f1605fd20ed22fa79dea ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex" 1716849630 6038 ccb406740cc3f03bbfb58ad504fe8c27 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex" 1716849630 6911 f6d4cf5a3fef5cc879d668b810e82868 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex" 1716849630 4883 42daaf41e27c3735286e23e48d2d7af9 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex" 1716849630 2544 8c06d2a7f0f469616ac9e13db6d2f842 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex" 1716849630 44195 5e390c414de027626ca5e2df888fa68d ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex" 1716849630 17311 2ef6b2e29e2fc6a2fc8d6d652176e257 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex" 1716849630 21302 788a79944eb22192a4929e46963a3067 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex" 1716849630 9691 3d42d89522f4650c2f3dc616ca2b925e ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex" 1716849630 33335 dd1fa4814d4e51f18be97d88bf0da60c ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex" 1716849630 2965 4c2b1f4e0826925746439038172e5d6f ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex" 1716849630 5196 2cc249e0ee7e03da5f5f6589257b1e5b ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex" 1716849630 20821 7579108c1e9363e61a0b1584778804aa ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex" 1716849630 35249 abd4adf948f960299a4b3d27c5dddf46 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex" 1716849630 22012 81b34a0aa8fa1a6158cc6220b00e4f10 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex" 1716849630 8893 e851de2175338fdf7c17f3e091d94618 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex" 1716849630 319 225dfe354ba678ff3c194968db39d447 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex" 1716849630 4572 4a19637ef65ce88ad2f2d5064b69541d ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex" 1716849630 15929 463535aa2c4268fead6674a75c0e8266 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex" 1716849630 5628 dc0ee4ba7f3e40acae5600067ce833de ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathmorphing.code.tex" 1716849630 321 cdd11262840e01e25374a2d458f15e99 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathreplacing.code.tex" 1716849630 1319 0b2de5126c6cbc295f0eb77f7344b34d ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex" 1716849630 3626 2d87dc681257fa32d07a8b3934b10f88 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryplotmarks.code.tex" 1716849630 325 36322b0789619b270aec5993d5a9ed08 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex" 1716849630 3937 3f208572dd82c71103831da976d74f1a ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex" 1716849630 410 048d1174dabde96757a5387b8f23d968 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex" 1716849630 1201 8bd51e254d3ecf0cd2f21edd9ab6f1bb ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex" 1716849630 494 8de62576191924285b021f4fc4292e16 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex" 1716849630 339 be0fe46d92a80e3385dd6a83511a46f2 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex" 1716849630 329 ba6d5440f8c16779c2384e0614158266 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex" 1716849630 923 c7a223b32ffdeb1c839d97935eee61ff ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex" 1716849630 475 4b4056fe07caa0603fede9a162fe666d ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex" 1716849630 11518 738408f795261b70ce8dd47459171309 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex" 1716849630 186782 af500404a9edec4d362912fe762ded92 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathmorphing.code.tex" 1716849630 8843 5533436db3e30fbad1e0440db6027dac ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathreplacing.code.tex" 1716849630 7474 f05a7223b140f230922562ac6a9fede5 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code.tex" 1716849630 31874 89148c383c49d4c72114a76fd0062299 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.meta.code.tex" 1716849630 58801 1e750fb0692eb99aaac45698bbec96b1 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex" 1716849630 85938 8e4ba97c5906e1c0d158aea81fe29af7 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryintersections.code.tex" 1716849630 44571 38ac24c171fb8fa1a13adc8ce7eb94c5 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex" 1716849630 32995 ac577023e12c0e4bd8aa420b2e852d1a ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex" 1716849630 14526 4bc184b12436aa7f6490b2d2036870ef ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex" 1716849630 91587 d9b31a3e308b08833e4528a7b4484b4a ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex" 1716849630 33336 427c354e28a4802ffd781da22ae9f383 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex" 1716849630 161011 76ab54df0aa1a9d3b27a94864771d38d ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex" 1716849630 46249 d1f322c52d26cf506b4988f31902cd5d ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex" 1716849630 62281 aff261ef10ba6cbe8e3c872a38c05a61 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex" 1716849630 90521 9d46d4504c2ffed28ff5ef3c43d15f21 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/math/pgfint.code.tex" 1716849630 3063 8c415c68a0f3394e45cfeca0b65f6ee6 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex" 1716849630 949 cea70942e7b7eddabfb3186befada2e6 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex" 1716849630 13270 2e54f2ce7622437bf37e013d399743e3 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex" 1716849630 104717 9b2393fbf004a0ce7fa688dbce423848 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex" 1716849630 10165 cec5fa73d49da442e56efc2d605ef154 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex" 1716849630 28178 41c17713108e0795aac6fef3d275fbca ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex" 1716849630 9649 85779d3d8d573bfd2cd4137ba8202e60 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex" 1716849630 3865 ac538ab80c5cf82b345016e474786549 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex" 1716849630 3177 27d85c44fbfe09ff3b2cf2879e3ea434 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex" 1716849630 11024 0179538121bc2dba172013a3ef89519f ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex" 1716849630 7890 0a86dbf4edfd88d022e0d889ec78cc03 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex" 1716849630 3379 781797a101f647bab82741a99944a229 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex" 1716849630 92405 f515f31275db273f97b9d8f52e1b0736 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex" 1716849630 37466 97b0a1ba732e306a1a2034f5a73e239f ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex" 1716849630 8471 c2883569d03f69e8e1cabfef4999cfd7 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex" 1716849630 71742 3da44a8be6626eef1c400c68776c7a0f ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex" 1716849630 21211 1e73ec76bd73964d84197cc3d2685b01 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex" 1716849630 16121 346f9013d34804439f7436ff6786cef7 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex" 1716849630 44792 271e2e1934f34c759f4dedb1e14a5015 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/pgf.revision.tex" 1716849630 114 e6d443369d0673933b38834bf99e422d ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg" 1716849630 926 2963ea0dcf6cc6c0a770b69ec46a477b ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def" 1716849630 5542 32f75a31ea6c3a7e1148cd6d5e93dbb7 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-luatex.def" 1716849630 13255 83878f3f820beccc0dd1c2683dabc65e ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def" 1716849630 12612 7774ba67bfd72e593c4436c2de6201e3 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex" 1716849630 61351 bc5f86e0355834391e736e97a61abced ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex" 1716849630 1896 b8e0ca0ac371d74c0ca05583f6313c91 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex" 1716849630 7778 53c8b5623d80238f6a20aa1df1868e63 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex" 1716849630 24033 d8893a1ec4d1bfa101b172754743d340 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex" 1716849630 39784 414c54e866ebab4b801e2ad81d9b21d8 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.tex" 1716849630 37433 940bc6d409f1ffd298adfdcaf125dd86 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex" 1716849630 4385 510565c2f07998c8a0e14f0ec07ff23c ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex" 1716849630 29239 22e8c7516012992a49873eff0d868fed ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def" 1716849630 6950 8524a062d82b7afdc4a88a57cb377784 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.surfshading.code.tex" 1716849630 22701 5fab7b8ebb90b053dc067d1bd37e43c2 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.tex" 1716849630 3047 aa82404aec57311271f4991c44bd71dc ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.contourlua.code.tex" 1716849630 2931 5d52092da9e839accd7c9026062fe5c3 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray.code.tex" 1716849630 23537 54be8160344d894595f6d145b1311658 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque.code.tex" 1716849630 4288 b8d6247899b21e3bb66bb11b24d30f2c ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure.code.tex" 1716849630 13828 11d1b09335a4a8baa693dd1e6cac3edf ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructureext.code.tex" 1716849630 24373 6544c1554e5da33118301011eb03058d ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatrix.code.tex" 1716849630 18861 7dc35832c8ccea3aa73cdcd75ec0a60b ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.tex" 1716849630 83469 f77a7d8a23834d4c2472f8dba8e67bff ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_loader.code.tex" 1716849630 12347 43d867ea29e34d528123d9ef750aa146 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfutil-common-lists.tex" 1716849630 8008 3bb2d07671e6afab7dcb90dfaec572a4 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex" 1716849630 485274 aafeb7052fbed4c8aba6fcc36c94ea72 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex" 1716849630 22428 72578a4c9324bc5dfafe23fe64f64024 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex" 1716849630 12489 859c23df41fb9067128ef5a64b01c0a4 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex" 1716849630 3533 973f376afa5a4526f16b11630b9931b4 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex" 1716849630 520 2a55e10851bbb34fb49a8e1d6b50a09b ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex" 1716849630 123680 d33fda4929d7200c3e6f0ec83c006aef ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex" 1716849630 367035 be5ad6faf030b5e07b899b712359f9d2 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex" 1716849630 19944 7957349fbe31c4e8dea9de4cd41cb086 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex" 1716849630 133871 7247b31742a2240343a6739cb76d6821 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code.tex" 1716849630 25239 bf1615252744653354985789b73e7404 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex" 1716849630 120954 bdf135670013db80411b2fb0f95876ac ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex" 1716849630 26393 a7d9bbecdd0db20d652c909dac892e25 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex" 1716849630 91244 1a0e9e49b7a2d10d1b1a610306ba4f8c ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surfshading.pgfsys-pdftex.def" 1716849630 5907 9dc460712c23e5b3338820499d47608c ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code.tex" 1716849630 3095 c82d281b748902a65be2ccca97360b11 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.tex" 1716849630 23050 a369aa910ef860a3621fe0459faa335c ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.code.tex" 1716849630 26859 7a4ee9d206fb0a0daa0d3108445afb57 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex" 1716849630 23958 1b96260863091af1669c3a38b1c4c9af ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex" 1716849630 88956 018b2512ef27998e97af72e8b1dcdbd5 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex" 1716849630 71792 dba1b75b15201895eb36f142f13b3238 ""
|
||||
"/usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code.tex" 1716849630 3286 c17079ba50483e1ac1721268ea016041 ""
|
||||
"/usr/share/texmf-dist/tex/generic/tracklang/tracklang.tex" 1716849630 141476 ac3d8d70bed5ec2b0ff757eb1ce593b1 ""
|
||||
"/usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty" 1716849630 7008 f92eaa0a3872ed622bbf538217cd2ab7 ""
|
||||
"/usr/share/texmf-dist/tex/generic/xkeyval/xkeyval.tex" 1716849630 19231 27205ee17aaa2902aea3e0c07a3cfc65 ""
|
||||
"/usr/share/texmf-dist/tex/generic/xkeyval/xkvutils.tex" 1716849630 7677 9cb1a74d945bc9331f2181c0a59ff34a ""
|
||||
"/usr/share/texmf-dist/tex/generic/xstring/xstring.sty" 1716849630 123 a302f2c651a95033260db60e51527ae8 ""
|
||||
"/usr/share/texmf-dist/tex/generic/xstring/xstring.tex" 1716849630 49397 a8071cbd06dd0bb15ae8acf876c73f20 ""
|
||||
"/usr/share/texmf-dist/tex/latex/acronym/acronym.sty" 1716849630 22582 38093488dbdcb4eb85c03bbc38fc7305 ""
|
||||
"/usr/share/texmf-dist/tex/latex/amscls/amsthm.sty" 1716849630 12594 0d51ac3a545aaaa555021326ff22a6cc ""
|
||||
"/usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty" 1716849630 5949 3f3fd50a8cc94c3d4cbf4fc66cd3df1c ""
|
||||
"/usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty" 1716849630 13829 94730e64147574077f8ecfea9bb69af4 ""
|
||||
"/usr/share/texmf-dist/tex/latex/amsfonts/umsa.fd" 1716849630 961 6518c6525a34feb5e8250ffa91731cff ""
|
||||
"/usr/share/texmf-dist/tex/latex/amsfonts/umsb.fd" 1716849630 961 d02606146ba5601b5645f987c92e6193 ""
|
||||
"/usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty" 1716849630 2222 499d61426192c39efd8f410ee1a52b9c ""
|
||||
"/usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty" 1716849630 4173 82ac04dfb1256038fad068287fbb4fe6 ""
|
||||
"/usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty" 1716849630 88371 d84032c0f422c3d1e282266c01bef237 ""
|
||||
"/usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty" 1716849630 4474 b811654f4bf125f11506d13d13647efb ""
|
||||
"/usr/share/texmf-dist/tex/latex/amsmath/amstext.sty" 1716849630 2444 0d0c1ee65478277e8015d65b86983da2 ""
|
||||
"/usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty" 1716849630 19336 ce7ae9438967282886b3b036cfad1e4d ""
|
||||
"/usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty" 1716849630 3935 57aa3c3e203a5c2effb4d2bd2efbc323 ""
|
||||
"/usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty" 1716849630 3045 273c666a54e60b9f730964f431a56c1b ""
|
||||
"/usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty" 1716849630 2462 6bc53756156dbd71c1ad550d30a3b93f ""
|
||||
"/usr/share/texmf-dist/tex/latex/base/fontenc.sty" 1716849630 5119 a04a8b68ab4f6ce800a41f7f8012a10e ""
|
||||
"/usr/share/texmf-dist/tex/latex/base/ifthen.sty" 1716849630 5319 2b738d02ce36ada6dcdd9534940db0ee ""
|
||||
"/usr/share/texmf-dist/tex/latex/base/inputenc.sty" 1716849630 5048 425739d70251273bf93e3d51f3c40048 ""
|
||||
"/usr/share/texmf-dist/tex/latex/base/makeidx.sty" 1716849630 1939 3225e20a81cec31e51c1e216d6385103 ""
|
||||
"/usr/share/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx" 1716849630 1818 9ed166ac0a9204a8ebe450ca09db5dde ""
|
||||
"/usr/share/texmf-dist/tex/latex/biblatex/bbx/standard.bbx" 1716849630 25680 409c3f3d570418bc545e8065bebd0688 ""
|
||||
"/usr/share/texmf-dist/tex/latex/biblatex/biblatex.cfg" 1716849630 69 249fa6df04d948e51b6d5c67bea30c42 ""
|
||||
"/usr/share/texmf-dist/tex/latex/biblatex/biblatex.def" 1716849630 92527 8f6b3a677f74ea525477a813f33c4e65 ""
|
||||
"/usr/share/texmf-dist/tex/latex/biblatex/biblatex.sty" 1716849630 528517 7eed285c714f532e12ae48b360c080f8 ""
|
||||
"/usr/share/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty" 1716849630 8433 72f8188742e7214b7068f345cd0287ac ""
|
||||
"/usr/share/texmf-dist/tex/latex/biblatex/blx-compat.def" 1716849630 13919 5426dbe90e723f089052b4e908b56ef9 ""
|
||||
"/usr/share/texmf-dist/tex/latex/biblatex/blx-dm.def" 1716849630 32455 8d3e554836db11aab80a8e11be62e1b1 ""
|
||||
"/usr/share/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx" 1716849630 4629 cda468e8a0b1cfa0f61872e171037a4b ""
|
||||
"/usr/share/texmf-dist/tex/latex/biblatex/lbx/english.lbx" 1716849630 39965 48ce9ce3350aba9457f1020b1deba5cf ""
|
||||
"/usr/share/texmf-dist/tex/latex/biblatex/lbx/german.lbx" 1716849630 33908 9178e63849ed8d931ae427546930e76a ""
|
||||
"/usr/share/texmf-dist/tex/latex/biblatex/lbx/ngerman.lbx" 1716849630 520 79db3ad588d8a32d9a5aa90a48bd8364 ""
|
||||
"/usr/share/texmf-dist/tex/latex/bigfoot/perpage.sty" 1716849630 5707 8a111e2f4c8f511ad622494ac2fe3f6d ""
|
||||
"/usr/share/texmf-dist/tex/latex/bigfoot/suffix.sty" 1716849630 3090 223874a03a08cecb9fb79bd86e5dcf97 ""
|
||||
"/usr/share/texmf-dist/tex/latex/bookmark/bkm-pdftex.def" 1716849630 8818 aa5157b46368efebf023abff55611467 ""
|
||||
"/usr/share/texmf-dist/tex/latex/bookmark/bookmark.sty" 1716849630 18245 97e6be180cf07bb6f7008cfdaaecfce5 ""
|
||||
"/usr/share/texmf-dist/tex/latex/carlisle/scalefnt.sty" 1716849630 1360 df2086bf924b14b72d6121fe9502fcdb ""
|
||||
"/usr/share/texmf-dist/tex/latex/csquotes/csquotes.cfg" 1716849630 7068 06f8d141725d114847527a66439066b6 ""
|
||||
"/usr/share/texmf-dist/tex/latex/csquotes/csquotes.def" 1716849630 21994 2bc2a882df92d97dbce35c06bb1d3541 ""
|
||||
"/usr/share/texmf-dist/tex/latex/csquotes/csquotes.sty" 1716849630 62761 3c92d495a9e03d7254b9a3266aa17164 ""
|
||||
"/usr/share/texmf-dist/tex/latex/datatool/datatool-base.sty" 1716849630 93620 4e9f9aa754a2337e89df3eeca1527291 ""
|
||||
"/usr/share/texmf-dist/tex/latex/datatool/datatool-fp.sty" 1716849630 3944 92aa06b5428fcc1b751c82409f23f92f ""
|
||||
"/usr/share/texmf-dist/tex/latex/elocalloc/elocalloc.sty" 1716849630 1428 7d469063535b93044f827bfdb1b0a130 ""
|
||||
"/usr/share/texmf-dist/tex/latex/enumitem/enumitem.sty" 1716849630 51697 f8f08183cd2080d9d18a41432d651dfb ""
|
||||
"/usr/share/texmf-dist/tex/latex/environ/environ.sty" 1716849630 4378 f429f0da968c278653359293040a8f52 ""
|
||||
"/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1716849630 13886 d1306dcf79a944f6988e688c1785f9ce ""
|
||||
"/usr/share/texmf-dist/tex/latex/eso-pic/eso-pic.sty" 1716849630 11876 6ef493863ae0d7a984706973240c2237 ""
|
||||
"/usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty" 1716849630 46845 3b58f70c6e861a13d927bff09d35ecbc ""
|
||||
"/usr/share/texmf-dist/tex/latex/eurosym/eurosym.sty" 1716849630 3028 8faeef64adee9b964b5e7f5e45921024 ""
|
||||
"/usr/share/texmf-dist/tex/latex/float/float.sty" 1716849630 6749 16d2656a1984957e674b149555f1ea1d ""
|
||||
"/usr/share/texmf-dist/tex/latex/fontawesome5/fontawesome5-generic-helper.sty" 1716849630 1796 6d3390e7a3f2a0f63ce89532aa30ac20 ""
|
||||
"/usr/share/texmf-dist/tex/latex/fontawesome5/fontawesome5-mapping.def" 1716849630 107808 07e47606922c76b1824e149c54155c4c ""
|
||||
"/usr/share/texmf-dist/tex/latex/fontawesome5/fontawesome5.sty" 1716849630 8112 16dbb19fca3f2df864fea49874356f35 ""
|
||||
"/usr/share/texmf-dist/tex/latex/fontawesome5/ufontawesomebrands0.fd" 1716849630 1206 b35c804e364d46e802702be118632c48 ""
|
||||
"/usr/share/texmf-dist/tex/latex/fontawesome5/ufontawesomefree1.fd" 1716849630 980 1b42613a5245ed252c04030af746d737 ""
|
||||
"/usr/share/texmf-dist/tex/latex/footmisc/footmisc.sty" 1716849630 21399 e9fa1517a82f349507e998594ef20b82 ""
|
||||
"/usr/share/texmf-dist/tex/latex/forest/forest.sty" 1716849630 350382 5acb55040bcf8080692df2e32715e5ea ""
|
||||
"/usr/share/texmf-dist/tex/latex/fp/defpattern.sty" 1716849630 1081 6a8d78d0e6b2d89334f92fd122c1da99 ""
|
||||
"/usr/share/texmf-dist/tex/latex/fp/fp-addons.sty" 1716849630 1275 fe903646b72b3e877914d78f2db9ddda ""
|
||||
"/usr/share/texmf-dist/tex/latex/fp/fp-basic.sty" 1716849630 29695 b6366b50463dfb367cf560419d0cea8d ""
|
||||
"/usr/share/texmf-dist/tex/latex/fp/fp-eqn.sty" 1716849630 11336 afed7aa5dbc4bf246950282b95e522c2 ""
|
||||
"/usr/share/texmf-dist/tex/latex/fp/fp-eval.sty" 1716849630 6220 eeeffd00d1235e73c380c6dc9f30ac43 ""
|
||||
"/usr/share/texmf-dist/tex/latex/fp/fp-exp.sty" 1716849630 16965 df20a610ce368cd126fd73d1a4e4fef1 ""
|
||||
"/usr/share/texmf-dist/tex/latex/fp/fp-pas.sty" 1716849630 3006 6fd5da0dc83ba1d19525f1fb08dca7df ""
|
||||
"/usr/share/texmf-dist/tex/latex/fp/fp-random.sty" 1716849630 3702 6e54ac63212901d59e6ea2a32b0a7689 ""
|
||||
"/usr/share/texmf-dist/tex/latex/fp/fp-snap.sty" 1716849630 6519 c1e5d3c6aed32ba782f756d79578d87b ""
|
||||
"/usr/share/texmf-dist/tex/latex/fp/fp-trigo.sty" 1716849630 28969 342a2de338e342de95d2551557e50f06 ""
|
||||
"/usr/share/texmf-dist/tex/latex/fp/fp-upn.sty" 1716849630 7154 78a835a719e27a484e63f1f98ba4df11 ""
|
||||
"/usr/share/texmf-dist/tex/latex/fp/fp.sty" 1716849630 983 d84df22b060ce125f89a32c403dcab31 ""
|
||||
"/usr/share/texmf-dist/tex/latex/geometry/geometry.sty" 1716849630 41601 9cf6c5257b1bc7af01a58859749dd37a ""
|
||||
"/usr/share/texmf-dist/tex/latex/glossaries-english/glossaries-english.ldf" 1716849630 3656 cfd7063dcf1f89f4d3681b9a8bd5be4d ""
|
||||
"/usr/share/texmf-dist/tex/latex/glossaries-german/glossaries-german.ldf" 1716849630 3629 97ae3d40edaa2b921aeca43a630251ae ""
|
||||
"/usr/share/texmf-dist/tex/latex/glossaries/base/glossaries.sty" 1716849630 235577 7329486ac0bfda16825e1574690851c7 ""
|
||||
"/usr/share/texmf-dist/tex/latex/glossaries/styles/glossary-hypernav.sty" 1716849630 7199 31ef596285bcfc5f137a9cdf4f672b67 ""
|
||||
"/usr/share/texmf-dist/tex/latex/glossaries/styles/glossary-list.sty" 1716849630 7582 3f3d0cc75dc6ec90f24e7e0f06dafb55 ""
|
||||
"/usr/share/texmf-dist/tex/latex/glossaries/styles/glossary-long.sty" 1716849630 9473 5fc765cb847b3ed09f2e43de0106e94b ""
|
||||
"/usr/share/texmf-dist/tex/latex/glossaries/styles/glossary-super.sty" 1716849630 10492 664406944050d6be3f5496c7040321dd ""
|
||||
"/usr/share/texmf-dist/tex/latex/glossaries/styles/glossary-tree.sty" 1716849630 12985 3ca2b8dc06f3d5e2e721fedebbcece6e ""
|
||||
"/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1716849630 1213 620bba36b25224fa9b7e1ccb4ecb76fd ""
|
||||
"/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1716849630 1224 978390e9c2234eab29404bc21b268d1e ""
|
||||
"/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def" 1716849630 19448 1e988b341dda20961a6b931bcde55519 ""
|
||||
"/usr/share/texmf-dist/tex/latex/graphics/color.sty" 1716849630 7233 e46ce9241d2b2ca2a78155475fdd557a ""
|
||||
"/usr/share/texmf-dist/tex/latex/graphics/graphics.sty" 1716849630 18387 8f900a490197ebaf93c02ae9476d4b09 ""
|
||||
"/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty" 1716849630 8010 a8d949cbdbc5c983593827c9eec252e1 ""
|
||||
"/usr/share/texmf-dist/tex/latex/graphics/keyval.sty" 1716849630 2671 7e67d78d9b88c845599a85b2d41f2e39 ""
|
||||
"/usr/share/texmf-dist/tex/latex/graphics/lscape.sty" 1716849630 1822 5e4f855a9ecb640f34881e4b457fa9aa ""
|
||||
"/usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx" 1716849630 2885 9c645d672ae17285bba324998918efd8 ""
|
||||
"/usr/share/texmf-dist/tex/latex/graphics/rotating.sty" 1716849630 7060 497c495d7b832441a479571bbce898ae ""
|
||||
"/usr/share/texmf-dist/tex/latex/graphics/trig.sty" 1716849630 4023 293ea1c16429fc0c4cf605f4da1791a9 ""
|
||||
"/usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty" 1716849630 17914 4c28a13fc3d975e6e81c9bea1d697276 ""
|
||||
"/usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def" 1716849630 48154 e46bf8adeb936500541441171d61726d ""
|
||||
"/usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty" 1716849630 220920 fd3cbb5f1a2bc9b8f451b8b7d8171264 ""
|
||||
"/usr/share/texmf-dist/tex/latex/hyperref/nameref.sty" 1716849630 11026 182c63f139a71afd30a28e5f1ed2cd1c ""
|
||||
"/usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def" 1716849630 14249 e67cb186717b7ab18d14a4875e7e98b5 ""
|
||||
"/usr/share/texmf-dist/tex/latex/hyperref/puenc.def" 1716849630 117112 05831178ece2cad4d9629dcf65099b11 ""
|
||||
"/usr/share/texmf-dist/tex/latex/inlinedef/inlinedef.sty" 1716849630 10102 e5ccd67aecac6cb4bf5de2b491ef79b5 ""
|
||||
"/usr/share/texmf-dist/tex/latex/koma-script/scrbase.sty" 1716849630 100856 24b70029ad44c2ee829db2529cf4ee23 ""
|
||||
"/usr/share/texmf-dist/tex/latex/koma-script/scrkbase.sty" 1716849630 21943 93cf6c456e50f74225092b8714462fa4 ""
|
||||
"/usr/share/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty" 1716849630 11185 15c86b5a61db19da88ab941ca5b70a12 ""
|
||||
"/usr/share/texmf-dist/tex/latex/koma-script/scrlfile.sty" 1716849630 3328 3d5fc41a419bf18130ce17d90a23c295 ""
|
||||
"/usr/share/texmf-dist/tex/latex/koma-script/scrlogo.sty" 1716849630 2162 418e29bcf2b8059e8a9ee1ea4d0d0c87 ""
|
||||
"/usr/share/texmf-dist/tex/latex/koma-script/scrreprt.cls" 1716849630 276315 91eeb23b9f1c27ea57cf36dce5ccf392 ""
|
||||
"/usr/share/texmf-dist/tex/latex/koma-script/scrsize12pt.clo" 1716849630 6875 10cbe29e93f0454651c45930deba8b1c ""
|
||||
"/usr/share/texmf-dist/tex/latex/koma-script/tocbasic.sty" 1716849630 107286 dc7973acee1c3708d665791407e3832e ""
|
||||
"/usr/share/texmf-dist/tex/latex/koma-script/typearea.sty" 1716849630 58382 11e5cfa7a7ea68055da565b4657ea350 ""
|
||||
"/usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1716849630 22555 6d8e155cfef6d82c3d5c742fea7c992e ""
|
||||
"/usr/share/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty" 1716849630 13815 760b0c02f691ea230f5359c4e1de23a7 ""
|
||||
"/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def" 1716849630 30006 3d512c0edd558928ddea1690180ef77e ""
|
||||
"/usr/share/texmf-dist/tex/latex/l3kernel/expl3.sty" 1716849630 6565 10e89ed128ccd59431746bbdd82129fc ""
|
||||
"/usr/share/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty" 1716849630 4674 4240ebde863d19dc4d13bb280b78abb2 ""
|
||||
"/usr/share/texmf-dist/tex/latex/l3packages/xparse/xparse.sty" 1716849630 9327 11bedad2ac38f92e405a38ed18489a03 ""
|
||||
"/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1716849630 678 4792914a8f45be57bb98413425e4c7af ""
|
||||
"/usr/share/texmf-dist/tex/latex/listings/listings.cfg" 1716849630 1830 20af84c556326f7c12b9202ebe363f56 ""
|
||||
"/usr/share/texmf-dist/tex/latex/listings/listings.sty" 1716849630 81322 d02238bdeb305f2c9f9d0229f99371d0 ""
|
||||
"/usr/share/texmf-dist/tex/latex/listings/lstlang1.sty" 1716849630 205167 fca232873050cd2da4f9c0c32402c38a ""
|
||||
"/usr/share/texmf-dist/tex/latex/listings/lstlang2.sty" 1716849630 93888 276ea2c46a9802155d8e1165b7aaad8e ""
|
||||
"/usr/share/texmf-dist/tex/latex/listings/lstmisc.sty" 1716849630 77022 5c8c440739265e7ba15b8379ece6ecd7 ""
|
||||
"/usr/share/texmf-dist/tex/latex/listings/lstpatch.sty" 1716849630 329 f19f5da7234b51d16764e23d20999c73 ""
|
||||
"/usr/share/texmf-dist/tex/latex/lm/lmodern.sty" 1716849630 1608 b00724785a9e9c599e5181bb8729160b ""
|
||||
"/usr/share/texmf-dist/tex/latex/lm/omllmm.fd" 1716849630 890 57f5adccd504fb5c98bdf99ed7e7f195 ""
|
||||
"/usr/share/texmf-dist/tex/latex/lm/omslmsy.fd" 1716849630 807 3de192f3efa968913bd2f096a7b430d8 ""
|
||||
"/usr/share/texmf-dist/tex/latex/lm/omxlmex.fd" 1716849630 568 a5494d810f2680caf10205cd1226c76c ""
|
||||
"/usr/share/texmf-dist/tex/latex/lm/ot1lmr.fd" 1716849630 1882 28c08db1407ebff35a658fd141753d16 ""
|
||||
"/usr/share/texmf-dist/tex/latex/lm/t1lmr.fd" 1716849630 1867 996fe743d88a01aca041ed22cc10e1bb ""
|
||||
"/usr/share/texmf-dist/tex/latex/lm/t1lmss.fd" 1716849630 1641 f48673bce41ac279099d0c9523459753 ""
|
||||
"/usr/share/texmf-dist/tex/latex/lm/t1lmtt.fd" 1716849630 2682 555da1faa2e266801e4b221d01a42cb5 ""
|
||||
"/usr/share/texmf-dist/tex/latex/lm/ts1lmr.fd" 1716849630 1914 884882d7ebb0fd65cea93fca77ff6f5a ""
|
||||
"/usr/share/texmf-dist/tex/latex/logreq/logreq.def" 1716849630 1620 fb1c32b818f2058eca187e5c41dfae77 ""
|
||||
"/usr/share/texmf-dist/tex/latex/logreq/logreq.sty" 1716849630 6187 b27afc771af565d3a9ff1ca7d16d0d46 ""
|
||||
"/usr/share/texmf-dist/tex/latex/mfirstuc/mfirstuc.sty" 1716849630 18649 0158a8d684645a30f5c01e471f44e851 ""
|
||||
"/usr/share/texmf-dist/tex/latex/microtype/microtype-pdftex.def" 1716849630 48246 c3eed060aba663f58af3ff756e83f2bd ""
|
||||
"/usr/share/texmf-dist/tex/latex/microtype/microtype.cfg" 1716849630 26842 05a01d67d23e805520393a049533b8c0 ""
|
||||
"/usr/share/texmf-dist/tex/latex/microtype/microtype.sty" 1716849630 98531 f79ec363f3014ada2cb766715926ecc9 ""
|
||||
"/usr/share/texmf-dist/tex/latex/microtype/mt-cmr.cfg" 1716849630 22906 7a8d9f8766e60f694cdde7648421c2ab ""
|
||||
"/usr/share/texmf-dist/tex/latex/microtype/mt-msa.cfg" 1716849630 5929 0e1d31c98c10fece90f470d5746ecdd6 ""
|
||||
"/usr/share/texmf-dist/tex/latex/microtype/mt-msb.cfg" 1716849630 5594 45ca1ba048c2fa6267d5419cc463d804 ""
|
||||
"/usr/share/texmf-dist/tex/latex/nag/nag-l2tabu.cfg" 1716849630 7633 a41632614a92dd522918e41a3b780a40 ""
|
||||
"/usr/share/texmf-dist/tex/latex/nag/nag-orthodox.cfg" 1716849630 1469 7d22b63e3d3989eea7b63602dd8de79f ""
|
||||
"/usr/share/texmf-dist/tex/latex/nag/nag.sty" 1716849630 14182 062a686afa2d58447e49360be4df373b ""
|
||||
"/usr/share/texmf-dist/tex/latex/pdflscape/pdflscape-nometadata.sty" 1716849630 6572 ea530fbbe537629fd97736d33babc07d ""
|
||||
"/usr/share/texmf-dist/tex/latex/pdflscape/pdflscape.sty" 1716849630 2224 1230ab76aa62221ccbd90bca8c8c015e ""
|
||||
"/usr/share/texmf-dist/tex/latex/pdfpages/pdfpages.sty" 1716849630 54914 ea9713532d0d0ae802ca2446650f9ded ""
|
||||
"/usr/share/texmf-dist/tex/latex/pdfpages/pppdftex.def" 1716849630 6591 249ecc067cc3246c4ed39a577ded77e3 ""
|
||||
"/usr/share/texmf-dist/tex/latex/pgf-pie/pgf-pie.sty" 1716849630 235 27eb33457ea75445bb99c64f6d935690 ""
|
||||
"/usr/share/texmf-dist/tex/latex/pgf-pie/tikzlibrarypie.code.tex" 1716849630 14000 29db17eb16436bea851cf45e6d962444 ""
|
||||
"/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty" 1716849630 1090 bae35ef70b3168089ef166db3e66f5b2 ""
|
||||
"/usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty" 1716849630 373 00b204b1d7d095b892ad31a7494b0373 ""
|
||||
"/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty" 1716849630 21013 f4ff83d25bb56552493b030f27c075ae ""
|
||||
"/usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty" 1716849630 989 c49c8ae06d96f8b15869da7428047b1e ""
|
||||
"/usr/share/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty" 1716849630 339 c2e180022e3afdb99c7d0ea5ce469b7d ""
|
||||
"/usr/share/texmf-dist/tex/latex/pgf/math/pgfmath.sty" 1716849630 306 c56a323ca5bf9242f54474ced10fca71 ""
|
||||
"/usr/share/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty" 1716849630 443 8c872229db56122037e86bcda49e14f3 ""
|
||||
"/usr/share/texmf-dist/tex/latex/pgf/utilities/pgffor.sty" 1716849630 348 ee405e64380c11319f0e249fed57e6c5 ""
|
||||
"/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty" 1716849630 274 5ae372b7df79135d240456a1c6f2cf9a ""
|
||||
"/usr/share/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty" 1716849630 325 f9f16d12354225b7dd52a3321f085955 ""
|
||||
"/usr/share/texmf-dist/tex/latex/pgfopts/pgfopts.sty" 1716849630 5540 d5c60cf09c59da351aa4023ed084e4eb ""
|
||||
"/usr/share/texmf-dist/tex/latex/pgfplots/pgfplots.sty" 1716849630 4904 ee78b44e85d6fccf08cd99370557481e ""
|
||||
"/usr/share/texmf-dist/tex/latex/refcount/refcount.sty" 1716849630 9878 9e94e8fa600d95f9c7731bb21dfb67a4 ""
|
||||
"/usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1716849630 9714 ba3194bd52c8499b3f1e3eb91d409670 ""
|
||||
"/usr/share/texmf-dist/tex/latex/setspace/setspace.sty" 1716849630 22490 8cac309b79a4c53a4ffce4b1b07aead0 ""
|
||||
"/usr/share/texmf-dist/tex/latex/substr/substr.sty" 1716849630 5724 d3505925e87b345f11a5f17d58550dea ""
|
||||
"/usr/share/texmf-dist/tex/latex/supertabular/supertabular.sty" 1716849630 15405 31e477e611bb77761a134e5593e8119d ""
|
||||
"/usr/share/texmf-dist/tex/latex/todonotes/todonotes.sty" 1716849630 21404 916e19cbd009b6d289c8194b313d3895 ""
|
||||
"/usr/share/texmf-dist/tex/latex/tools/array.sty" 1716849630 12667 e4b5eb11e4b7239e6c8a52bbe074a6c6 ""
|
||||
"/usr/share/texmf-dist/tex/latex/tools/calc.sty" 1716849630 10214 547fd4d29642cb7c80bf54b49d447f01 ""
|
||||
"/usr/share/texmf-dist/tex/latex/tools/longtable.sty" 1716849630 12935 94a3291359b5f73ff1b19345a6983105 ""
|
||||
"/usr/share/texmf-dist/tex/latex/tracklang/tracklang.sty" 1716849630 9021 97184989e222403ee383aaf91e0f1ae0 ""
|
||||
"/usr/share/texmf-dist/tex/latex/translator/translator.sty" 1716849630 8765 56d370785f0143111ff9898b5adfe08e ""
|
||||
"/usr/share/texmf-dist/tex/latex/trimspaces/trimspaces.sty" 1716849630 1380 971a51b00a14503ddf754cab24c3f209 ""
|
||||
"/usr/share/texmf-dist/tex/latex/url/url.sty" 1716849630 12796 8edb7d69a20b857904dd0ea757c14ec9 ""
|
||||
"/usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty" 1716849630 26220 3701aebf80ccdef248c0c20dd062fea9 ""
|
||||
"/usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty" 1716849630 55487 80a65caedd3722f4c20a14a69e785d8f ""
|
||||
"/usr/share/texmf-dist/tex/latex/xfor/xfor.sty" 1716849630 2689 44855b72da58344b1c1d9b3087bce6ca ""
|
||||
"/usr/share/texmf-dist/tex/latex/xkeyval/xkeyval.sty" 1716849630 4937 4ce600ce9bd4ec84d0250eb6892fcf4f ""
|
||||
"/usr/share/texmf-dist/tex/latex/xpatch/xpatch.sty" 1716849630 8314 7803f78066c4f9d008405191a4b43073 ""
|
||||
"/usr/share/texmf-dist/web2c/texmf.cnf" 1716849630 41588 b43d3e860a4f94167ee1e725ff526a72 ""
|
||||
"/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1717169733.52637 5467607 1f3b9843102088c2a7136e28f005c5e4 ""
|
||||
"/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1717169731 8555700 87a1c7b150cc2e03770b89bdf648f22c ""
|
||||
"ads/cover.tex" 1721429458.02486 1826 220af11ecc5bf6eb31fab5959e925666 ""
|
||||
"ads/declaration.tex" 1721429458.02486 1458 772087beed44b55eff6c6004a3269d62 ""
|
||||
"ads/header.tex" 1721429630.74268 5133 26d66d29979be00fb678fe3d9a862d64 ""
|
||||
"content/abstract.tex" 1713883594.46783 1014 fc7b145c55e8d3076f6417ba88b88bf7 ""
|
||||
"content/acronyms.tex" 1721429630.74268 375 3826e57933403627b95adc0a81148488 ""
|
||||
"content/appendix.tex" 1721429458.02486 2666 53ba540cf6ffac55e7aaaa1a8af22207 ""
|
||||
"content/chapter/01.tex" 1721429630.74268 31818 4bd91c8ac34ea770f0141d635deb78d7 ""
|
||||
"content/chapter/02.tex" 1721429458.02819 23089 13f8b87b01d51a03a025980cb29cfa54 ""
|
||||
"content/chapter/03.tex" 1721429630.74268 29942 78496294b17a3d218f93b788df99d213 ""
|
||||
"content/chapter/04.tex" 1721429630.74268 7568 319b11d5fbd90796eeab165e4428b9ca ""
|
||||
"content/chapter/05.tex" 1721429458.02819 3972 7d95b074a06785ec15491f08c4aec5ac ""
|
||||
"content/glossary.tex" 1721429458.02819 996 20079a24629ca1a7d604c600540cd63f ""
|
||||
"images/cover/logo-dhbw.pdf" 1713883594.46783 16447 f9d7cbf73a36b16358d1e48fd59b4ef5 ""
|
||||
"lang/de.tex" 1721429458.02819 1305 7e59f300f3f47bea3c68af9995acd2e2 ""
|
||||
"main.aux" 1721429638.71304 49892 68b6c8e7bd65256bbb03967a53059e91 "pdflatex"
|
||||
"main.bbl" 1721429477.3424 55178 df5f5d175c269048b897cef96297f0d6 "biber main"
|
||||
"main.gls" 0 -1 0 ""
|
||||
"main.glsdefs" 1721429638.67304 0 d41d8cd98f00b204e9800998ecf8427e "pdflatex"
|
||||
"main.lof" 1721429638.72638 1691 4ba1732a1c204dd9655820fc88e66ece "pdflatex"
|
||||
"main.lol" 1721429638.72638 4571 fa7fafd15fffb634aca7414a5e90d0a9 "pdflatex"
|
||||
"main.lot" 1721429638.72638 777 8f5d49507a65f68946e4c3f02906f835 "pdflatex"
|
||||
"main.run.xml" 1721429638.72638 2369 ccb474562fe6aac7c928c718dad4b48f "pdflatex"
|
||||
"main.tex" 1721429458.03153 1786 28a6cde893ddc9c505d4925fdced8afc ""
|
||||
"main.toc" 1721429638.72638 3601 0f4943bebc8552f39a486142f6bda189 "pdflatex"
|
||||
"settings/document.tex" 1721429458.03153 1628 490faa8c538c1bcd92d1e6db739981f4 ""
|
||||
"settings/main.tex" 1721429630.74268 2026 477df195b5c9791e4b93d58f938d218c ""
|
||||
(generated)
|
||||
"main.aux"
|
||||
"main.bcf"
|
||||
"main.glo"
|
||||
"main.glsdefs"
|
||||
"main.ist"
|
||||
"main.lof"
|
||||
"main.log"
|
||||
"main.lol"
|
||||
"main.lot"
|
||||
"main.pdf"
|
||||
"main.run.xml"
|
||||
"main.toc"
|
||||
(rewritten before read)
|
860
Studienarbeit/main.fls
Normal file
860
Studienarbeit/main.fls
Normal file
@ -0,0 +1,860 @@
|
||||
PWD /home/julian/Programmierung/uni/Studienarbeit/Studienarbeit
|
||||
INPUT /usr/share/texmf-dist/web2c/texmf.cnf
|
||||
INPUT /var/lib/texmf/web2c/pdftex/pdflatex.fmt
|
||||
INPUT main.tex
|
||||
OUTPUT main.log
|
||||
INPUT ./ads/header.tex
|
||||
INPUT ./ads/header.tex
|
||||
INPUT ./ads/header.tex
|
||||
INPUT ./ads/header.tex
|
||||
INPUT ads/header.tex
|
||||
INPUT /usr/share/texmf-dist/tex/latex/nag/nag.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/nag/nag.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/nag/nag-l2tabu.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/nag/nag-l2tabu.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/nag/nag-l2tabu.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/nag/nag-orthodox.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/nag/nag-orthodox.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/nag/nag-orthodox.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/scrreprt.cls
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/scrreprt.cls
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/scrkbase.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/scrkbase.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/scrbase.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/scrbase.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/scrlfile.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/scrlfile.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/scrlfile-hook.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/scrlogo.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/scrlogo.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/tocbasic.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/tocbasic.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/typearea.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/footmisc/footmisc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/scrsize12pt.clo
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/scrsize12pt.clo
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/scrsize12pt.clo
|
||||
INPUT /usr/share/texmf-dist/fonts/map/fontname/texfonts.map
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr12.tfm
|
||||
INPUT /usr/share/texmf-dist/tex/latex/koma-script/typearea.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/xstring/xstring.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/xstring/xstring.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/xstring/xstring.tex
|
||||
INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1200.tfm
|
||||
INPUT ./settings/main.tex
|
||||
INPUT ./settings/main.tex
|
||||
INPUT ./settings/main.tex
|
||||
INPUT ./settings/main.tex
|
||||
INPUT settings/main.tex
|
||||
INPUT ./settings/document.tex
|
||||
INPUT ./settings/document.tex
|
||||
INPUT ./settings/document.tex
|
||||
INPUT ./settings/document.tex
|
||||
INPUT settings/document.tex
|
||||
INPUT ./lang/de.tex
|
||||
INPUT ./lang/de.tex
|
||||
INPUT ./lang/de.tex
|
||||
INPUT ./lang/de.tex
|
||||
INPUT lang/de.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel/txtbabel.def
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel-english/english.ldf
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel-english/english.ldf
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel-english/english.ldf
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel-german/ngerman.ldf
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel-german/ngerman.ldf
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel-german/ngerman.ldf
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel-german/ngermanb.ldf
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel/locale/de/babel-ngerman.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel/locale/de/babel-ngerman.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel/locale/de/babel-ngerman.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel/locale/de/babel-de.ini
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel/locale/en/babel-english.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel/locale/en/babel-english.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel/locale/en/babel-english.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/babel/locale/en/babel-en.ini
|
||||
INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/microtype.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/microtype.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/microtype-pdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/microtype-pdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/microtype-pdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/microtype.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/microtype.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/microtype.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/setspace/setspace.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/setspace/setspace.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/base/makeidx.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/base/makeidx.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/csquotes/csquotes.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/csquotes/csquotes.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/csquotes/csquotes.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/csquotes/csquotes.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/csquotes/csquotes.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/csquotes/csquotes.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/csquotes/csquotes.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/csquotes/csquotes.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/tools/longtable.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/tools/longtable.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/enumitem/enumitem.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/enumitem/enumitem.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pdfpages/pdfpages.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pdfpages/pdfpages.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/base/ifthen.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/base/ifthen.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/tools/calc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/tools/calc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/eso-pic/eso-pic.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/eso-pic/eso-pic.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics/mathcolor.ltx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pdfpages/pppdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pdfpages/pppdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pdfpages/pppdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/float/float.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/float/float.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/tools/array.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/tools/array.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/eurosym/eurosym.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/eurosym/eurosym.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/pgf.revision.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/pgf.revision.tex
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgfkeyslibraryfiltered.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/math/pgfmath.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/math/pgfmath.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/latex/footmisc/footmisc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/bigfoot/perpage.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/bigfoot/perpage.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/acronym/acronym.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/acronym/acronym.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/bigfoot/suffix.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/bigfoot/suffix.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/listings.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/listings.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstpatch.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstpatch.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstpatch.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/listings.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/listings.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/listings.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/todonotes/todonotes.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/todonotes/todonotes.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/xkeyval/xkeyval.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/xkeyval/xkeyval.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/xkeyval/xkeyval.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/xkeyval/xkvutils.tex
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/math/pgfint.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics/rotating.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics/rotating.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics/lscape.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics/lscape.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/lmodern.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/lmodern.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/kvsetkeys/kvsetkeys.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
|
||||
INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/bookmark/bookmark.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/bookmark/bookmark.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/bookmark/bkm-pdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/bookmark/bkm-pdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/bookmark/bkm-pdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries/base/glossaries.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries/base/glossaries.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/mfirstuc/mfirstuc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/mfirstuc/mfirstuc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/xfor/xfor.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/xfor/xfor.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/datatool/datatool-base.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/datatool/datatool-base.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/substr/substr.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/substr/substr.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/datatool/datatool-fp.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/datatool/datatool-fp.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/defpattern.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/defpattern.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-basic.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-basic.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-addons.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-addons.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-snap.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-snap.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-exp.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-exp.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-trigo.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-trigo.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-pas.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-pas.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-random.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-random.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-eqn.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-eqn.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-upn.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-upn.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-eval.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fp/fp-eval.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/supertabular/supertabular.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/supertabular/supertabular.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/tracklang/tracklang.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/tracklang/tracklang.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/tracklang/tracklang.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/tracklang/tracklang.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/tracklang/tracklang.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/tracklang/tracklang.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/tracklang/tracklang.tex
|
||||
INPUT /usr/share/texmf-dist/tex/latex/translator/translator.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/translator/translator.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/translator/translator.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries-german/glossaries-german.ldf
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries-german/glossaries-german.ldf
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries-german/glossaries-german.ldf
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries-english/glossaries-english.ldf
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries-english/glossaries-english.ldf
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries-english/glossaries-english.ldf
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries/styles/glossary-hypernav.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries/styles/glossary-hypernav.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries/styles/glossary-list.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries/styles/glossary-list.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries/styles/glossary-long.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries/styles/glossary-long.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries/styles/glossary-super.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries/styles/glossary-super.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/supertabular/supertabular.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries/styles/glossary-tree.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/glossaries/styles/glossary-tree.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fontawesome5/fontawesome5.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fontawesome5/fontawesome5.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/l3kernel/expl3.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/l3kernel/expl3.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fontawesome5/fontawesome5-generic-helper.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fontawesome5/fontawesome5-generic-helper.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fontawesome5/fontawesome5-mapping.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fontawesome5/fontawesome5-mapping.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/forest/forest.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/forest/forest.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.geometric.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.geometric.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.misc.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.misc.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.symbols.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.symbols.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.arrows.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.arrows.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.callouts.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.callouts.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryshapes.multipart.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshapes.multipart.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryfit.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryintersections.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryintersections.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgfopts/pgfopts.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgfopts/pgfopts.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/elocalloc/elocalloc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/elocalloc/elocalloc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/environ/environ.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/environ/environ.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/trimspaces/trimspaces.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/trimspaces/trimspaces.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/inlinedef/inlinedef.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/inlinedef/inlinedef.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf-pie/pgf-pie.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf-pie/pgf-pie.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf-pie/tikzlibrarypie.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgf-pie/tikzlibrarypie.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/latex/carlisle/scalefnt.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/carlisle/scalefnt.sty
|
||||
OUTPUT main.glo
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/biblatex.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/biblatex.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/logreq/logreq.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/logreq/logreq.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/logreq/logreq.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/logreq/logreq.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/logreq/logreq.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/blx-dm.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/blx-dm.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/blx-dm.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/blx-compat.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/blx-compat.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/blx-compat.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/biblatex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/biblatex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/biblatex.def
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/bbx/standard.bbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/bbx/standard.bbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/bbx/standard.bbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/biblatex.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/biblatex.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/biblatex.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amscls/amsthm.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amscls/amsthm.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/xpatch/xpatch.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/xpatch/xpatch.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryarrows.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.meta.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.meta.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.meta.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgfplots/pgfplots.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pgfplots/pgfplots.sty
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-luatex.def
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-luatex.def
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_loader.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfutil-common-lists.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructureext.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatrix.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.surfshading.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surfshading.pgfsys-pdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surfshading.pgfsys-pdftex.def
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplotimage.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathmorphing.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathmorphing.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathmorphing.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathmorphing.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathreplacing.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathreplacing.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathreplacing.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathreplacing.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.contourlua.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.contourlua.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryplotmarks.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryplotmarks.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang2.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang2.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang2.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
INPUT ./content/glossary.tex
|
||||
INPUT ./content/glossary.tex
|
||||
INPUT ./content/glossary.tex
|
||||
INPUT ./content/glossary.tex
|
||||
INPUT content/glossary.tex
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/t1lmr.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/t1lmr.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/t1lmr.fd
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmr12.tfm
|
||||
INPUT ./main.aux
|
||||
INPUT ./main.aux
|
||||
INPUT main.aux
|
||||
OUTPUT main.aux
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/mt-cmr.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/mt-cmr.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/mt-cmr.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
INPUT /usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pdflscape/pdflscape.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pdflscape/pdflscape.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pdflscape/pdflscape-nometadata.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/pdflscape/pdflscape-nometadata.sty
|
||||
OUTPUT main.pdf
|
||||
INPUT ./main.glsdefs
|
||||
INPUT ./main.glsdefs
|
||||
INPUT main.glsdefs
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/lbx/ngerman.lbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/lbx/ngerman.lbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/lbx/ngerman.lbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/lbx/german.lbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/lbx/german.lbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/lbx/german.lbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/lbx/german.lbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/lbx/german.lbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/lbx/german.lbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/lbx/english.lbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/lbx/english.lbx
|
||||
INPUT /usr/share/texmf-dist/tex/latex/biblatex/lbx/english.lbx
|
||||
OUTPUT main.bcf
|
||||
INPUT main.bbl
|
||||
INPUT ./main.bbl
|
||||
INPUT ./main.bbl
|
||||
INPUT ./main.bbl
|
||||
INPUT main.bbl
|
||||
INPUT ./ads/cover.tex
|
||||
INPUT ./ads/cover.tex
|
||||
INPUT ./ads/cover.tex
|
||||
INPUT ./ads/cover.tex
|
||||
INPUT ads/cover.tex
|
||||
INPUT ./images/cover/logo-dhbw.pdf
|
||||
INPUT ./images/cover/logo-dhbw.pdf
|
||||
INPUT ./images/cover/logo-dhbw.pdf
|
||||
INPUT ./images/cover/logo-dhbw.pdf
|
||||
INPUT ./images/cover/logo-dhbw.pdf
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmr17.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmbx12.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmr12.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmbx12.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmbx12.tfm
|
||||
OUTPUT main.ist
|
||||
INPUT /var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map
|
||||
INPUT /usr/share/texmf-dist/fonts/enc/dvips/lm/lm-ec.enc
|
||||
INPUT ./ads/declaration.tex
|
||||
INPUT ./ads/declaration.tex
|
||||
INPUT ./ads/declaration.tex
|
||||
INPUT ./ads/declaration.tex
|
||||
INPUT ads/declaration.tex
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/t1lmss.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/t1lmss.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/t1lmss.fd
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmss12.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmssbx10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmssbx10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmri12.tfm
|
||||
INPUT ./content/abstract.tex
|
||||
INPUT ./content/abstract.tex
|
||||
INPUT ./content/abstract.tex
|
||||
INPUT ./content/abstract.tex
|
||||
INPUT content/abstract.tex
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmssbx10.tfm
|
||||
INPUT ./main.toc
|
||||
INPUT ./main.toc
|
||||
INPUT main.toc
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/ot1lmr.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/ot1lmr.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/ot1lmr.fd
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/rm-lmr12.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/rm-lmr8.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/rm-lmr6.tfm
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/omllmm.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/omllmm.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/omllmm.fd
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/lmmi12.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/lmmi8.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/lmmi6.tfm
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/omslmsy.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/omslmsy.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/omslmsy.fd
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/lmsy10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/lmsy8.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/lmsy6.tfm
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/omxlmex.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/omxlmex.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/omxlmex.fd
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/lmex10.tfm
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/mt-msa.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/mt-msa.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/mt-msa.cfg
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/mt-msb.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/mt-msb.cfg
|
||||
INPUT /usr/share/texmf-dist/tex/latex/microtype/mt-msb.cfg
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm
|
||||
OUTPUT main.toc
|
||||
INPUT ./content/acronyms.tex
|
||||
INPUT ./content/acronyms.tex
|
||||
INPUT ./content/acronyms.tex
|
||||
INPUT ./content/acronyms.tex
|
||||
INPUT content/acronyms.tex
|
||||
INPUT ./main.lof
|
||||
INPUT ./main.lof
|
||||
INPUT main.lof
|
||||
OUTPUT main.lof
|
||||
INPUT ./main.lot
|
||||
INPUT ./main.lot
|
||||
INPUT main.lot
|
||||
OUTPUT main.lot
|
||||
INPUT ./main.lol
|
||||
INPUT ./main.lol
|
||||
INPUT main.lol
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/t1lmtt.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/t1lmtt.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/t1lmtt.fd
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmtt12.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmtt10.tfm
|
||||
OUTPUT main.lol
|
||||
INPUT ./content/chapter/01.tex
|
||||
INPUT ./content/chapter/01.tex
|
||||
INPUT content/chapter/01.tex
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmssbx10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmr8.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmr10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/rm-lmr10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/rm-lmr7.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/rm-lmr5.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/lmmi10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/lmmi7.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/lmmi5.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/lmsy10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/lmsy7.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/lmsy5.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmr7.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmtt10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmr10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmr6.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmro12.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/rm-lmr10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/lmmi10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/lmsy10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang2.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang2.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang2.sty
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmtt8.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmtt8.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/enc/dvips/lm/lm-mathsy.enc
|
||||
INPUT /usr/share/texmf-dist/fonts/enc/dvips/lm/lm-rm.enc
|
||||
INPUT /usr/share/texmf-dist/fonts/enc/dvips/lm/lm-mathit.enc
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/ts1lmr.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/ts1lmr.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/lm/ts1lmr.fd
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ts1-lmr12.tfm
|
||||
INPUT ./content/chapter/02.tex
|
||||
INPUT ./content/chapter/02.tex
|
||||
INPUT content/chapter/02.tex
|
||||
INPUT /usr/share/texmf-dist/fonts/enc/dvips/lm/lm-ts1.enc
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang2.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang2.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang2.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fontawesome5/ufontawesomefree1.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fontawesome5/ufontawesomefree1.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fontawesome5/ufontawesomefree1.fd
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/fontawesome5/fa5free1solid.tfm
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fontawesome5/ufontawesomebrands0.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fontawesome5/ufontawesomebrands0.fd
|
||||
INPUT /usr/share/texmf-dist/tex/latex/fontawesome5/ufontawesomebrands0.fd
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/fontawesome5/fa5brands0.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/enc/dvips/fontawesome5/fa5free1.enc
|
||||
INPUT /usr/share/texmf-dist/fonts/enc/dvips/fontawesome5/fa5brands0.enc
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
INPUT /usr/share/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
INPUT ./content/chapter/03.tex
|
||||
INPUT ./content/chapter/03.tex
|
||||
INPUT content/chapter/03.tex
|
||||
INPUT /usr/share/texmf-dist/fonts/enc/dvips/lm/lm-mathex.enc
|
||||
INPUT ./content/chapter/04.tex
|
||||
INPUT ./content/chapter/04.tex
|
||||
INPUT content/chapter/04.tex
|
||||
INPUT ./content/chapter/05.tex
|
||||
INPUT ./content/chapter/05.tex
|
||||
INPUT content/chapter/05.tex
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ec-lmcsc10.tfm
|
||||
INPUT /usr/share/texmf-dist/fonts/tfm/public/lm/ts1-lmri12.tfm
|
||||
INPUT content/glossary.tex
|
||||
OUTPUT main.glsdefs
|
||||
INPUT ./content/appendix.tex
|
||||
INPUT ./content/appendix.tex
|
||||
INPUT ./content/appendix.tex
|
||||
INPUT ./content/appendix.tex
|
||||
INPUT content/appendix.tex
|
||||
INPUT main.aux
|
||||
INPUT main.run.xml
|
||||
OUTPUT main.run.xml
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/fontawesome5/FontAwesome5Brands-Regular.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/fontawesome5/FontAwesome5Free-Solid.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmbx12.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmcsc10.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmex10.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmmi12.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmmi8.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmr10.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmr12.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmr6.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmr7.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmr8.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmri12.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmro12.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmssbx10.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmsy10.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmsy7.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmsy8.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmtt10.pfb
|
||||
INPUT /usr/share/texmf-dist/fonts/type1/public/lm/lmtt12.pfb
|
33
Studienarbeit/main.glo
Normal file
33
Studienarbeit/main.glo
Normal file
@ -0,0 +1,33 @@
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{VII}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{14}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{16}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{16}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{16}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{17}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{17}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{17}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{17}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{19}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{19}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{20}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{20}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{20}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{20}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{20}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{20}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{21}
|
||||
\glossaryentry{JUnit?\glossentry{JUnit}|setentrycounter[]{page}"\glsnumberformat}{22}
|
||||
\glossaryentry{Maven?\glossentry{Maven}|setentrycounter[]{page}"\glsnumberformat}{23}
|
||||
\glossaryentry{Maven?\glossentry{Maven}|setentrycounter[]{page}"\glsnumberformat}{23}
|
||||
\glossaryentry{JUnit?\glossentry{JUnit}|setentrycounter[]{page}"\glsnumberformat}{23}
|
||||
\glossaryentry{JUnit?\glossentry{JUnit}|setentrycounter[]{page}"\glsnumberformat}{24}
|
||||
\glossaryentry{JUnit?\glossentry{JUnit}|setentrycounter[]{page}"\glsnumberformat}{24}
|
||||
\glossaryentry{Maven?\glossentry{Maven}|setentrycounter[]{page}"\glsnumberformat}{24}
|
||||
\glossaryentry{JUnit?\glossentry{JUnit}|setentrycounter[]{page}"\glsnumberformat}{25}
|
||||
\glossaryentry{JUnit?\glossentry{JUnit}|setentrycounter[]{page}"\glsnumberformat}{25}
|
||||
\glossaryentry{JUnit?\glossentry{JUnit}|setentrycounter[]{page}"\glsnumberformat}{25}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{29}
|
||||
\glossaryentry{Maven?\glossentry{Maven}|setentrycounter[]{page}"\glsnumberformat}{29}
|
||||
\glossaryentry{javac?\glossentry{javac}|setentrycounter[]{page}"\glsnumberformat}{32}
|
||||
\glossaryentry{Antlr?\glossentry{Antlr}|setentrycounter[]{page}"\glsnumberformat}{45}
|
||||
\glossaryentry{ASM?\glossentry{ASM}|setentrycounter[]{page}"\glsnumberformat}{45}
|
0
Studienarbeit/main.glsdefs
Normal file
0
Studienarbeit/main.glsdefs
Normal file
29
Studienarbeit/main.ist
Normal file
29
Studienarbeit/main.ist
Normal file
@ -0,0 +1,29 @@
|
||||
% makeindex style file created by the glossaries package
|
||||
% for document 'main' on 2024-7-20
|
||||
actual '?'
|
||||
encap '|'
|
||||
level '!'
|
||||
quote '"'
|
||||
keyword "\\glossaryentry"
|
||||
preamble "\\glossarysection[\\glossarytoctitle]{\\glossarytitle}\\glossarypreamble\n\\begin{theglossary}\\glossaryheader\n"
|
||||
postamble "\%\n\\end{theglossary}\\glossarypostamble\n"
|
||||
group_skip "\\glsgroupskip\n"
|
||||
item_0 "\%\n"
|
||||
item_1 "\%\n"
|
||||
item_2 "\%\n"
|
||||
item_01 "\%\n"
|
||||
item_x1 "\\relax \\glsresetentrylist\n"
|
||||
item_12 "\%\n"
|
||||
item_x2 "\\relax \\glsresetentrylist\n"
|
||||
delim_0 "\{\\glossaryentrynumbers\{\\relax "
|
||||
delim_1 "\{\\glossaryentrynumbers\{\\relax "
|
||||
delim_2 "\{\\glossaryentrynumbers\{\\relax "
|
||||
delim_t "\}\}"
|
||||
delim_n "\\delimN "
|
||||
delim_r "\\delimR "
|
||||
headings_flag 1
|
||||
heading_prefix "\\glsgroupheading\{"
|
||||
heading_suffix "\}\\relax \\glsresetentrylist "
|
||||
symhead_positive "glssymbols"
|
||||
numhead_positive "glsnumbers"
|
||||
page_compositor "."
|
20
Studienarbeit/main.lof
Normal file
20
Studienarbeit/main.lof
Normal file
@ -0,0 +1,20 @@
|
||||
\babel@toc {ngerman}{}\relax
|
||||
\addvspace {10\p@ }
|
||||
\addvspace {10\p@ }
|
||||
\contentsline {figure}{\numberline {1.1}{\ignorespaces Selbstkompilierender Compiler in Java-TX}}{15}{figure.1.1}%
|
||||
\addvspace {10\p@ }
|
||||
\contentsline {figure}{\numberline {2.1}{\ignorespaces Zirkuläre Abhängigkeiten zwischen Java und \ac {Java-TX} Dateien}}{16}{figure.2.1}%
|
||||
\contentsline {figure}{\numberline {2.2}{\ignorespaces Zirkuläre Abhängigkeiten zwischen Java und \ac {Java-TX} Dateien behoben}}{17}{figure.2.2}%
|
||||
\contentsline {figure}{\numberline {2.3}{\ignorespaces Dateistruktur des Projekts}}{22}{figure.2.3}%
|
||||
\addvspace {10\p@ }
|
||||
\contentsline {figure}{\numberline {3.1}{\ignorespaces Gefundene Probleme und neue Funktionen}}{26}{figure.3.1}%
|
||||
\contentsline {figure}{\numberline {3.2}{\ignorespaces Die Classloader Hierarchie des \glqq {}Java-TX Compiler\grqq {}{} (vgl. \blx@tocontentsinit {0}\cite {nero_all_2023})}}{30}{figure.3.2}%
|
||||
\contentsline {figure}{\numberline {3.3}{\ignorespaces Die Classloader Hierarchie des \glqq {}Java-TX Compiler\grqq {}{} ohne den ApplicationClassLoader}}{31}{figure.3.3}%
|
||||
\contentsline {figure}{\numberline {3.4}{\ignorespaces Primitive Datentypen in Java-TX}}{35}{figure.3.4}%
|
||||
\addvspace {10\p@ }
|
||||
\contentsline {figure}{\numberline {4.1}{\ignorespaces Vererbungshierarchie von java.util.List ab Java 21 \blx@tocontentsinit {0}\cite {noauthor_java_nodate-2}}}{42}{figure.4.1}%
|
||||
\addvspace {10\p@ }
|
||||
\contentsline {figure}{\numberline {5.1}{\ignorespaces Verhältnis der Java und \ac {Java-TX} Dateien im \glqq {}Java-TX Compiler in Java-TX\grqq {}}}{44}{figure.5.1}%
|
||||
\addvspace {10\p@ }
|
||||
\addvspace {10\p@ }
|
||||
\providecommand \tocbasic@end@toc@file {}\tocbasic@end@toc@file
|
2570
Studienarbeit/main.log
Normal file
2570
Studienarbeit/main.log
Normal file
File diff suppressed because it is too large
Load Diff
48
Studienarbeit/main.lol
Normal file
48
Studienarbeit/main.lol
Normal file
@ -0,0 +1,48 @@
|
||||
\babel@toc {ngerman}{}\relax
|
||||
\addvspace {10\p@ }
|
||||
\addvspace {10\p@ }
|
||||
\contentsline {lstlisting}{\numberline {1.1}List.of() mit explizitem Typ}{2}{lstlisting.1.1}%
|
||||
\contentsline {lstlisting}{\numberline {1.2}List.of() mit implizitem Typ}{2}{lstlisting.1.2}%
|
||||
\contentsline {lstlisting}{\numberline {1.3}Verbesserungen für Typinferenz in Java 8 (Beispiel aus {\blx@tocontentsinit {0}\cite {oracle_type_nodate}[Target Types]})}{2}{lstlisting.1.3}%
|
||||
\contentsline {lstlisting}{\numberline {1.4}Java 7 Diamond Operator}{2}{lstlisting.1.4}%
|
||||
\contentsline {lstlisting}{\numberline {1.5}Java Generics ohne Diamond Operator}{3}{lstlisting.1.5}%
|
||||
\contentsline {lstlisting}{\numberline {1.6}Java 8 Lambda-Ausdrücke}{3}{lstlisting.1.6}%
|
||||
\contentsline {lstlisting}{\numberline {1.7}Lambda-Ausdruck mit explizitem Typ}{3}{lstlisting.1.7}%
|
||||
\contentsline {lstlisting}{\numberline {1.8}Java 10 var Platzhalter}{4}{lstlisting.1.8}%
|
||||
\contentsline {lstlisting}{\numberline {1.9}Ungültige Verwendung des \lstinline |var| Schlüsselworts}{4}{lstlisting.1.9}%
|
||||
\contentsline {lstlisting}{\numberline {1.10}Funktion add in Haskell}{4}{lstlisting.1.10}%
|
||||
\contentsline {lstlisting}{\numberline {1.11}Untypisierte Methode add}{5}{lstlisting.1.11}%
|
||||
\contentsline {lstlisting}{\numberline {1.12}Von Typinferenz errechnete Typen für \autoref {lst:simple_typeinference_wo_types}}{5}{lstlisting.1.12}%
|
||||
\contentsline {lstlisting}{\numberline {1.13}Methodenüberladungen durch Typinferenz}{6}{lstlisting.1.13}%
|
||||
\contentsline {lstlisting}{\numberline {1.14}Resultat der Typinferenz für \autoref {lst:globaltypeinference2}}{6}{lstlisting.1.14}%
|
||||
\contentsline {lstlisting}{\numberline {1.15}Erstellung eines Threads mit einer anonymen Klasse}{7}{lstlisting.1.15}%
|
||||
\contentsline {lstlisting}{\numberline {1.16}Erstellung eines Threads mit einem Lambda Ausdruck}{8}{lstlisting.1.16}%
|
||||
\contentsline {lstlisting}{\numberline {1.17}Lambda Ausdruck mit var}{8}{lstlisting.1.17}%
|
||||
\contentsline {lstlisting}{\numberline {1.18}Varianz in Java}{11}{lstlisting.1.18}%
|
||||
\contentsline {lstlisting}{\numberline {1.19}Subtypisierung von Funktionstypen in Java-TX}{12}{lstlisting.1.19}%
|
||||
\contentsline {lstlisting}{\numberline {1.20}Lambda Ausdruck ohne Typkontext}{12}{lstlisting.1.20}%
|
||||
\contentsline {lstlisting}{\numberline {1.21}Aufbau einer Makefile-Regel aus {\blx@tocontentsinit {0}\cite {stallman_gnu_2004}[S.3]}}{12}{lstlisting.1.21}%
|
||||
\contentsline {lstlisting}{\numberline {1.22}Beispiel eines Makefiles aus {\blx@tocontentsinit {0}\cite {stallman_gnu_2004}[S.4]}}{13}{lstlisting.1.22}%
|
||||
\addvspace {10\p@ }
|
||||
\contentsline {lstlisting}{\numberline {2.1}Makefile für die Kompilierung des \glqq {}Java-TX Compiler in Java-TX\grqq {}{}}{18}{lstlisting.2.1}%
|
||||
\contentsline {lstlisting}{\numberline {2.2}Skript zum Kompilieren und Ausführen der Tests}{24}{lstlisting.2.2}%
|
||||
\addvspace {10\p@ }
|
||||
\contentsline {lstlisting}{\numberline {3.1}For-Each Schleife in Java}{27}{lstlisting.3.1}%
|
||||
\contentsline {lstlisting}{\numberline {3.2}For-Each Schleife in Java-TX}{27}{lstlisting.3.2}%
|
||||
\contentsline {lstlisting}{\numberline {3.3}Verwenden von Klassen im JVM Classpath}{30}{lstlisting.3.3}%
|
||||
\contentsline {lstlisting}{\numberline {3.4}Verwendung der Stream API in Java}{32}{lstlisting.3.4}%
|
||||
\contentsline {lstlisting}{\numberline {3.5}Aktuell nicht lauffähiger \ac {Java-TX} Code I}{33}{lstlisting.3.5}%
|
||||
\contentsline {lstlisting}{\numberline {3.6}Aktuell nicht lauffähiger \ac {Java-TX} Code II}{34}{lstlisting.3.6}%
|
||||
\contentsline {lstlisting}{\numberline {3.7}Überschreiben von Methoden mit primitiven Datentypen in Java-TX}{35}{lstlisting.3.7}%
|
||||
\contentsline {lstlisting}{\numberline {3.8}Ergebnis der Typinferenz für die Methode \texttt {hashCode} in Java-TX}{35}{lstlisting.3.8}%
|
||||
\contentsline {lstlisting}{\numberline {3.9}Kovariante Methodenüberladung in Java}{36}{lstlisting.3.9}%
|
||||
\contentsline {lstlisting}{\numberline {3.10}Dekompilierter Bytecode der Klasse A}{37}{lstlisting.3.10}%
|
||||
\contentsline {lstlisting}{\numberline {3.11}Überladene Methoden in Java}{38}{lstlisting.3.11}%
|
||||
\addvspace {10\p@ }
|
||||
\contentsline {lstlisting}{\numberline {4.1}Beispielklasse aus dem \glqq {}Java-TX Compiler\grqq {}{}}{40}{lstlisting.4.1}%
|
||||
\contentsline {lstlisting}{\numberline {4.2}\autoref {lst:prinzipal_type_example} ohne Typinformationen}{41}{lstlisting.4.2}%
|
||||
\contentsline {lstlisting}{\numberline {4.3}Inferierte Typen für \autoref {lst:prinzipal_type_example_javatx}}{42}{lstlisting.4.3}%
|
||||
\addvspace {10\p@ }
|
||||
\addvspace {10\p@ }
|
||||
\addvspace {10\p@ }
|
||||
\providecommand \tocbasic@end@toc@file {}\tocbasic@end@toc@file
|
12
Studienarbeit/main.lot
Normal file
12
Studienarbeit/main.lot
Normal file
@ -0,0 +1,12 @@
|
||||
\babel@toc {ngerman}{}\relax
|
||||
\addvspace {10\p@ }
|
||||
\addvspace {10\p@ }
|
||||
\contentsline {table}{\numberline {1.1}{\ignorespaces Gängige funktionale Interfaces in der Java Standardbibliothek}}{9}{table.1.1}%
|
||||
\addvspace {10\p@ }
|
||||
\contentsline {table}{\numberline {2.1}{\ignorespaces Kompilierzeiten des \glqq {}Java-TX Compiler\grqq {}{} mit \gls {javac}\FN@sf@gobble@opt {Diese Zeiten wurden mit einem Intel i5-12400F Prozessor und 16GB RAM auf einem Linux Rechner mit dem \ac {GNU} Time Befehl gemessen. Jeder Test wurde 5x durchgeführt. Der Durchschnitt wurde aus allen Durchläufen berechnet.}}}{21}{table.2.1}%
|
||||
\addvspace {10\p@ }
|
||||
\addvspace {10\p@ }
|
||||
\addvspace {10\p@ }
|
||||
\addvspace {10\p@ }
|
||||
\addvspace {10\p@ }
|
||||
\providecommand \tocbasic@end@toc@file {}\tocbasic@end@toc@file
|
BIN
Studienarbeit/main.pdf
Normal file
BIN
Studienarbeit/main.pdf
Normal file
Binary file not shown.
87
Studienarbeit/main.run.xml
Normal file
87
Studienarbeit/main.run.xml
Normal file
@ -0,0 +1,87 @@
|
||||
<?xml version="1.0" standalone="yes"?>
|
||||
<!-- logreq request file -->
|
||||
<!-- logreq version 1.0 / dtd version 1.0 -->
|
||||
<!-- Do not edit this file! -->
|
||||
<!DOCTYPE requests [
|
||||
<!ELEMENT requests (internal | external)*>
|
||||
<!ELEMENT internal (generic, (provides | requires)*)>
|
||||
<!ELEMENT external (generic, cmdline?, input?, output?, (provides | requires)*)>
|
||||
<!ELEMENT cmdline (binary, (option | infile | outfile)*)>
|
||||
<!ELEMENT input (file)+>
|
||||
<!ELEMENT output (file)+>
|
||||
<!ELEMENT provides (file)+>
|
||||
<!ELEMENT requires (file)+>
|
||||
<!ELEMENT generic (#PCDATA)>
|
||||
<!ELEMENT binary (#PCDATA)>
|
||||
<!ELEMENT option (#PCDATA)>
|
||||
<!ELEMENT infile (#PCDATA)>
|
||||
<!ELEMENT outfile (#PCDATA)>
|
||||
<!ELEMENT file (#PCDATA)>
|
||||
<!ATTLIST requests
|
||||
version CDATA #REQUIRED
|
||||
>
|
||||
<!ATTLIST internal
|
||||
package CDATA #REQUIRED
|
||||
priority (9) #REQUIRED
|
||||
active (0 | 1) #REQUIRED
|
||||
>
|
||||
<!ATTLIST external
|
||||
package CDATA #REQUIRED
|
||||
priority (1 | 2 | 3 | 4 | 5 | 6 | 7 | 8) #REQUIRED
|
||||
active (0 | 1) #REQUIRED
|
||||
>
|
||||
<!ATTLIST provides
|
||||
type (static | dynamic | editable) #REQUIRED
|
||||
>
|
||||
<!ATTLIST requires
|
||||
type (static | dynamic | editable) #REQUIRED
|
||||
>
|
||||
<!ATTLIST file
|
||||
type CDATA #IMPLIED
|
||||
>
|
||||
]>
|
||||
<requests version="1.0">
|
||||
<internal package="biblatex" priority="9" active="0">
|
||||
<generic>latex</generic>
|
||||
<provides type="dynamic">
|
||||
<file>main.bcf</file>
|
||||
</provides>
|
||||
<requires type="dynamic">
|
||||
<file>main.bbl</file>
|
||||
</requires>
|
||||
<requires type="static">
|
||||
<file>blx-dm.def</file>
|
||||
<file>blx-compat.def</file>
|
||||
<file>biblatex.def</file>
|
||||
<file>standard.bbx</file>
|
||||
<file>numeric.bbx</file>
|
||||
<file>numeric.cbx</file>
|
||||
<file>biblatex.cfg</file>
|
||||
<file>german.lbx</file>
|
||||
<file>ngerman.lbx</file>
|
||||
<file>english.lbx</file>
|
||||
</requires>
|
||||
</internal>
|
||||
<external package="biblatex" priority="5" active="0">
|
||||
<generic>biber</generic>
|
||||
<cmdline>
|
||||
<binary>biber</binary>
|
||||
<infile>main</infile>
|
||||
</cmdline>
|
||||
<input>
|
||||
<file>main.bcf</file>
|
||||
</input>
|
||||
<output>
|
||||
<file>main.bbl</file>
|
||||
</output>
|
||||
<provides type="dynamic">
|
||||
<file>main.bbl</file>
|
||||
</provides>
|
||||
<requires type="dynamic">
|
||||
<file>main.bcf</file>
|
||||
</requires>
|
||||
<requires type="editable">
|
||||
<file>bibliographie.bib</file>
|
||||
</requires>
|
||||
</external>
|
||||
</requests>
|
108
Studienarbeit/main.tex
Normal file
108
Studienarbeit/main.tex
Normal file
@ -0,0 +1,108 @@
|
||||
%!TEX root = ./main.tex
|
||||
|
||||
%%**************************************************************
|
||||
%%
|
||||
%% DHBW Heidenheim - Template for Bachelor Thesis
|
||||
%%
|
||||
%% Bevor usisng this template please have a look at the REAMDME.md file
|
||||
%%
|
||||
%%**************************************************************
|
||||
|
||||
\input{ads/header}
|
||||
|
||||
\input{content/glossary}
|
||||
|
||||
\begin{document}
|
||||
|
||||
% Cover
|
||||
\begin{spacing}{1}
|
||||
\input{ads/cover}
|
||||
\end{spacing}
|
||||
\newpage
|
||||
|
||||
\pagenumbering{Roman}
|
||||
|
||||
% Restriction notices
|
||||
%\ifDocType{T2\_3100}{%
|
||||
% % no restricition notices for semester paper
|
||||
%}{%
|
||||
% \input{ads/restrictionNotices}
|
||||
% \newpage
|
||||
%}%
|
||||
|
||||
% Declaration
|
||||
\input{ads/declaration}
|
||||
\newpage
|
||||
|
||||
% Abstract
|
||||
\input{content/abstract}
|
||||
\newpage
|
||||
|
||||
% only page number in footer
|
||||
\pagestyle{plain}
|
||||
|
||||
% space bevore chapter headline
|
||||
\RedeclareSectionCommand[beforeskip=\chapterMargin]{chapter}
|
||||
|
||||
% Contents
|
||||
\begin{spacing}{1.1}
|
||||
\begingroup
|
||||
|
||||
% set subchapter depth
|
||||
\setcounter{tocdepth}{2}
|
||||
|
||||
\tableofcontents
|
||||
\clearpage
|
||||
\endgroup
|
||||
\end{spacing}
|
||||
\newpage
|
||||
|
||||
% Acronyms
|
||||
\cleardoublepage
|
||||
\input{content/acronyms}
|
||||
|
||||
% List of Figures
|
||||
\cleardoublepage
|
||||
\listoffigures
|
||||
|
||||
%List of Tables
|
||||
\cleardoublepage
|
||||
\listoftables
|
||||
|
||||
% List of Listings
|
||||
\cleardoublepage
|
||||
\lstlistoflistings
|
||||
\cleardoublepage
|
||||
|
||||
\pagenumbering{arabic}
|
||||
|
||||
\pagestyle{headings}
|
||||
|
||||
%Content
|
||||
\foreach \i in {01,02,03,04,05,06,07,08,09,...,99} {%
|
||||
\edef\FileName{content/chapter/\i .tex}%
|
||||
\IfFileExists{\FileName}{%
|
||||
\input{\FileName}
|
||||
}
|
||||
{%
|
||||
% No chapter available
|
||||
}
|
||||
}
|
||||
|
||||
\clearpage
|
||||
|
||||
% Bibilography
|
||||
\cleardoublepage
|
||||
\printbibliography
|
||||
|
||||
% Glossar
|
||||
\cleardoublepage
|
||||
\printglossary[style=altlist,title=\glossaryPhrase]
|
||||
\input{content/glossary}
|
||||
|
||||
% Appendix
|
||||
\clearpage
|
||||
\appendix
|
||||
\input{content/appendix}
|
||||
|
||||
\end{document}
|
0
Studienarbeit/main.tex.bbl
Normal file
0
Studienarbeit/main.tex.bbl
Normal file
5
Studienarbeit/main.tex.blg
Normal file
5
Studienarbeit/main.tex.blg
Normal file
@ -0,0 +1,5 @@
|
||||
[0] Config.pm:307> INFO - This is Biber 2.19
|
||||
[0] Config.pm:310> INFO - Logfile is 'main.tex.blg'
|
||||
[39] biber:340> INFO - === Sa Mai 25, 2024, 11:30:10
|
||||
[96] Utils.pm:410> ERROR - Cannot find 'main.tex.bcf'!
|
||||
[96] Biber.pm:136> INFO - ERRORS: 1
|
42
Studienarbeit/main.toc
Normal file
42
Studienarbeit/main.toc
Normal file
@ -0,0 +1,42 @@
|
||||
\babel@toc {ngerman}{}\relax
|
||||
\contentsline {chapter}{\nonumberline Abkürzungsverzeichnis}{V}{chapter*.3}%
|
||||
\contentsline {chapter}{\nonumberline Abbildungsverzeichnis}{VI}{chapter*.4}%
|
||||
\contentsline {chapter}{\nonumberline Tabellenverzeichnis}{VII}{chapter*.6}%
|
||||
\contentsline {chapter}{\nonumberline Listings}{VIII}{chapter*.7}%
|
||||
\contentsline {chapter}{\numberline {1}Grundlagen}{1}{chapter.1}%
|
||||
\contentsline {section}{\numberline {1.1}Typinferenz in Java}{1}{section.1.1}%
|
||||
\contentsline {subsection}{\numberline {1.1.1}Typinferenz bei generischen Methoden}{1}{subsection.1.1.1}%
|
||||
\contentsline {subsection}{\numberline {1.1.2}Der Diamond Operator}{2}{subsection.1.1.2}%
|
||||
\contentsline {subsection}{\numberline {1.1.3}Typinferenz bei Lambda Ausdrücken}{3}{subsection.1.1.3}%
|
||||
\contentsline {subsection}{\numberline {1.1.4}Der Typplatzhalter var}{3}{subsection.1.1.4}%
|
||||
\contentsline {section}{\numberline {1.2}Typinferenz in Java-TX}{4}{section.1.2}%
|
||||
\contentsline {section}{\numberline {1.3}Anonyme Funktionen in Java}{6}{section.1.3}%
|
||||
\contentsline {subsection}{\numberline {1.3.1}Funktionale Interfaces und Lambda Ausdrücke}{7}{subsection.1.3.1}%
|
||||
\contentsline {subsection}{\numberline {1.3.2}Wildcards}{10}{subsection.1.3.2}%
|
||||
\contentsline {section}{\numberline {1.4}Echte Funktionstypen in Java-TX}{11}{section.1.4}%
|
||||
\contentsline {section}{\numberline {1.5}GNU Make}{12}{section.1.5}%
|
||||
\contentsline {section}{\numberline {1.6}Selbstkompilierende Compiler}{14}{section.1.6}%
|
||||
\contentsline {chapter}{\numberline {2}Aufbau der Umgebung}{16}{chapter.2}%
|
||||
\contentsline {section}{\numberline {2.1}Voraussetzungen}{16}{section.2.1}%
|
||||
\contentsline {section}{\numberline {2.2}Kompilierung mit Make}{18}{section.2.2}%
|
||||
\contentsline {subsection}{\numberline {2.2.1}Performanceprobleme}{20}{subsection.2.2.1}%
|
||||
\contentsline {section}{\numberline {2.3}Kompilierung mit Bash}{21}{section.2.3}%
|
||||
\contentsline {section}{\numberline {2.4}Tests}{23}{section.2.4}%
|
||||
\contentsline {chapter}{\numberline {3}Aufgetretene Probleme}{26}{chapter.3}%
|
||||
\contentsline {section}{\numberline {3.1}Neue Funktionen}{27}{section.3.1}%
|
||||
\contentsline {subsection}{\numberline {3.1.1}For\-Each Schleife}{27}{subsection.3.1.1}%
|
||||
\contentsline {subsection}{\numberline {3.1.2}Weitere neue Funktionen}{28}{subsection.3.1.2}%
|
||||
\contentsline {section}{\numberline {3.2}Bugs}{28}{section.3.2}%
|
||||
\contentsline {subsection}{\numberline {3.2.1}JVM Classpath wird von \glqq {}Java-TX Compiler\grqq {}{} beachtet}{29}{subsection.3.2.1}%
|
||||
\contentsline {subsection}{\numberline {3.2.2}Kompatibilität von Java-TX Funktionstypen und funktionalen Interfaces}{31}{subsection.3.2.2}%
|
||||
\contentsline {subsection}{\numberline {3.2.3}Überschreiben von Methoden mit primitiven Datentypen}{34}{subsection.3.2.3}%
|
||||
\contentsline {subsection}{\numberline {3.2.4}Korrekter Methodenaufruf für überladene Methoden mit Subtypen als Parameter}{37}{subsection.3.2.4}%
|
||||
\contentsline {subsection}{\numberline {3.2.5}Weitere Bugs und fehlende Features}{39}{subsection.3.2.5}%
|
||||
\contentsline {chapter}{\numberline {4}Vorteile in der Praxis}{40}{chapter.4}%
|
||||
\contentsline {chapter}{\numberline {5}Fazit und Ausblick}{44}{chapter.5}%
|
||||
\contentsline {section}{\numberline {5.1}Fazit}{44}{section.5.1}%
|
||||
\contentsline {section}{\numberline {5.2}Ausblick}{45}{section.5.2}%
|
||||
\contentsline {chapter}{\nonumberline Literatur}{46}{chapter*.15}%
|
||||
\contentsline {chapter}{\nonumberline Anhang}{51}{chapter*.16}%
|
||||
\contentsline {section}{\numberline {.1}Sourcecode des Bash Skripts zur Kompilierung}{51}{section.Alph0.1}%
|
||||
\providecommand \tocbasic@end@toc@file {}\tocbasic@end@toc@file
|
187
Studienarbeit/readme.md
Normal file
187
Studienarbeit/readme.md
Normal file
@ -0,0 +1,187 @@
|
||||
# DHBW Heidenheim LaTeX Template
|
||||
|
||||
Dieses LaTeX Template ist für alle Arbeiten der Fakultät Informatik der DHBW Heidenheim geeignet.
|
||||
|
||||
**Inhalt:**
|
||||
* [Templatestruktur](#templatestruktur)
|
||||
* [Document Types](#document-types)
|
||||
* [Komponenten einer Wissenschaftlichen Arbeit](#komponenten-einer-wissenschaftlichen-arbeit)
|
||||
* [Contributors](#contributors)
|
||||
|
||||
## Templatestruktur
|
||||
|
||||
Das Template ist im Wesentlichen in 6 Teile unterteilt:
|
||||
|
||||
* main.tex
|
||||
* ads/
|
||||
* lang/
|
||||
* settings/
|
||||
* content/
|
||||
* images/
|
||||
|
||||
### main.tex
|
||||
|
||||
main.tex ist die Kerndatei des Templates und damit auch die Datei, die kompiliert werden muss. Durch Importe anderer Dateien wird die Dokumentenstruktur beschrieben (kann bei Bedarf geändert werden wenn z.B. kein Sperrvermerk gewünscht wird).
|
||||
|
||||
### ads
|
||||
|
||||
Im Ordner ads befinden sich folgende vordefinierte Vorlagen, welche nicht angepasst werden müssen (Anpassungen erfolgen automatisch):
|
||||
|
||||
* Deckblatt
|
||||
* Eigenständigkeitserklärung
|
||||
* Sperrvermerk
|
||||
* LaTeX Document Header
|
||||
|
||||
### lang
|
||||
|
||||
Im Ordner lang befinden sich alle notwendigen Übersetzungen.
|
||||
|
||||
### settings
|
||||
|
||||
Der Ordner settings beinhaltet zwei Dateien:
|
||||
|
||||
* main.tex
|
||||
* document.tex
|
||||
|
||||
In der Datei main.tex sind grundlegende Einstellungen vordefiniert, welche nicht geändert werden müssen.
|
||||
|
||||
In der Datei document.tex müssen einige Angaben über die zu schreibende Arbeit gemacht werden:
|
||||
|
||||
| Variable | Beschreibung | Mögliche Werte |
|
||||
| ------------------- | ----------------------------------------------------- | --------------- |
|
||||
| documentLanguage | Sprache der Arbeit | de<br/> en |
|
||||
| documentType | Art der Arbeit | T2\\_1000 Projektarbeit (Semester 1 & 2) <br/> T2\\_2000 Projektarbeit (Semester 3 & 4) <br/> T2\\_3100 Studienarbeit (Semester 5) <br/> T2\\_3300 Bachelorarbeit <br/> Für andere Arbeiten den Typ direkt eintragen|
|
||||
| multipleAuthors | Wurde die Arbeit von mehreren Autoren verfasst? | true<br/> false |
|
||||
| documentAuthor | Autor der Arbeit | |
|
||||
| documentTitle | Titel der Arbeit | |
|
||||
| documentPeriod | Dauer der Arbeit | |
|
||||
| matriculationNumber | Matrikelnummer des Autors | |
|
||||
| locationUniversity | Standort der DHBW | Heidenheim |
|
||||
| department | Fakultät der DHBW in der sich der Autor befindet | |
|
||||
| course | Kurs in dem sich der Autor befindet | |
|
||||
| degree | Abschluss, welcher mit dieser Arbeit angestrebt wird | Bachelor of Science (INF2014-MI - INF2016-MI) <br/> Bachelor of Engineering (INF2014-IA/IM - INF2016-IA/IM) <br/> Bachelor of Science (INF2017-IM/MI/IA) |
|
||||
| lecture | Vorlesung, für die die Arbeit geschrieben wurde | |
|
||||
| showLecture | Ob die Vorlesung auf dem Deckblatt gezeigt werden soll| true <br/> false|
|
||||
| releaseDate | Abgabedatum | |
|
||||
| releaseLocation | Abgabeort | Heidenheim |
|
||||
| companyName | Name des Unternehmens in dem der Autor angestellt ist | |
|
||||
| companyLocation | Firmensitz | |
|
||||
| tutor | Betrieblicher Betreuer der Arbeit | |
|
||||
| evaluator | Zweitkorrektor der Arbeit | |
|
||||
| linkColor | Farbe von Verlinkungen | 000000 (schwarz)|
|
||||
|
||||
### content
|
||||
|
||||
### images
|
||||
|
||||
|
||||
# Document Types
|
||||
|
||||
Das Template bietet die folgenden verschiedenen Document Types an:
|
||||
|
||||
* T2_1000 Project Thesis (Semester 1 & 2)
|
||||
* T2_2000 Project Thesis (Semester 3 & 4)
|
||||
* T2_3100 Seminar Paper (Semester 5 & 6)
|
||||
* T2_3300 Bachelor Thesis
|
||||
* Sonstige
|
||||
|
||||
Das Template passt alle relevanten Einstellungen automatisch an, sobald der Document Type geändert wird.
|
||||
|
||||
## Document Type spezifische Besonderheiten
|
||||
|
||||
### T2_3100
|
||||
|
||||
Die Studienarbeit ist eine reine Hochschularbeit. Aus diesem Grund wird der Ort der Firma und der Sperrvermerk entfernt. Desweiteren ist es möglich die Studienarbeit als Gruppe abzugeben. Hierfür gibt es die Variable multipleAuthors. Ist diese auf true gesetzt, passt sich die Eigenständigkeitserklärungs selbst von der Ich- zur Wir-Form an. Mehrere Autoren sind lediglich mit Komma getrent in die Variable documentAuthor einzutragen.
|
||||
|
||||
### Sonstige
|
||||
Für andere als die vordefinierten Types kann der Dokumenttyp direkt in das Feld `documentType` eingetragen werden (z.B. Hausarbeit). Unternehmensinformationen werden dann ausgeblendet.
|
||||
|
||||
# Komponenten einer Wissenschaftlichen Arbeit
|
||||
|
||||
## Abstract
|
||||
|
||||
An abstract is a brief summary of a research article, thesis, review, conference proceeding or any in-depth analysis of a particular subject or discipline, and is often used to help the reader quickly ascertain the paper's purpose. When used, an abstract always appears at the beginning of a manuscript, acting as the point-of-entry for any given scientific paper or patent application. Abstracting and indexing services for various academic disciplines are aimed at compiling a body of literature for that particular subject.
|
||||
|
||||
The terms précis or synopsis are used in some publications to refer to the same thing that other publications might call an ``abstract''. In ``management'' reports, an executive summary usually contains more information (and often more sensitive information) than the abstract does.
|
||||
|
||||
Quelle: http://en.wikipedia.org/wiki/Abstract_(summary)
|
||||
|
||||
|
||||
## Acronyms
|
||||
|
||||
Nur verwendete Akronyme werden letztlich im Abkürzungsverzeichnis des Dokuments angezeigt.
|
||||
|
||||
Verwendung:
|
||||
* `\ac{Abk.}` --> fügt die Abkürzung ein, beim ersten Aufruf wird zusätzlich automatisch die ausgeschriebene Version davor eingefügt bzw. in einer Fußnote (hierfür muss in header.tex \usepackage[printonlyused,footnote]{acronym} stehen) dargestellt
|
||||
* `\acs{Abk.}` --> fügt die Abkürzung ein
|
||||
* `\acf{Abk.}` --> fügt die Abkürzung UND die Erklärung ein
|
||||
* `\acl{Abk.}` --> fügt nur die Erklärung ein
|
||||
* `\acp{Abk.}` --> gibt Plural aus (angefügtes 's'); das zusätzliche 'p' funktioniert auch bei obigen Befehlen
|
||||
|
||||
Siehe auch: [http://golatex.de/wiki/\acronym](http://golatex.de/wiki/%5Cacronym)
|
||||
|
||||
Beispiel:
|
||||
```LaTeX
|
||||
\acro{AGPL}{Affero GNU General Public License}
|
||||
\acro{WSN}{Wireless Sensor Network}
|
||||
```
|
||||
|
||||
|
||||
## Appendix
|
||||
|
||||
(Beispielhafter Anhang)
|
||||
|
||||
```LaTeX
|
||||
{\Large
|
||||
\begin{enumerate}[label=\Alph*.]
|
||||
\item Assignment
|
||||
\item List of CD Contents
|
||||
\item CD
|
||||
\end{enumerate}
|
||||
}
|
||||
\pagebreak
|
||||
%\includepdf[pages=-,scale=.9,pagecommand={}]{Aufgabenstellung.pdf} % PDF um 10% verkleinert einbinden --> Kopf- und Fußzeile werden so korrekt dargestellt. Die Option `pages' ermöglicht es, eine bestimmte Sequenz von Seiten (z.B. 2-10 oder `-' für alle Seiten) auszuwählen.
|
||||
\pagebreak
|
||||
\section*{B. Auflistung der Begleitmaterial-Archivdatei }
|
||||
Die Archivdatei wurde zusammen mit der Online-Version dieser Ausarbeitung auf die Lernplattform hochgeladen.
|
||||
\begin{tabbing}
|
||||
mm \= mm \= mmmmmmmmmmmmmmmm \= \kill
|
||||
$\vdash$ \textbf{Literature/} \\
|
||||
| \> $\vdash$ \textbf{Citavi-Project(incl pdfs)/} \> \> $\Rightarrow$ \textit{Citavi (bibliography software) project with}\\
|
||||
| \> | \> \> \textit{almost all found sources relating to this report.} \\
|
||||
| \> | \> \> \textit{The PDFs linked to bibliography items therein} \\
|
||||
| \> | \> \> \textit{are in the sub-directory `CitaviFiles'}\\
|
||||
| \> | \> -- bibliography.bib \> $\Rightarrow$ \textit{Exported Bibliography file with all sources}\\
|
||||
| \> | \> -- Studienarbeit.ctv4 \> $\Rightarrow$ \textit{Citavi Project file}\\
|
||||
| \> | \> $\vdash$ \textbf{CitaviCovers/} \> $\Rightarrow$ \textit{Images of bibliography cover pages}\\
|
||||
| \> | \> $\vdash$ \textbf{CitaviFiles/} \> $\Rightarrow$ \textit{Cited and most other found PDF resources}\\ %\llcorner
|
||||
| \> $\vdash$ \textbf{eBooks/} \\
|
||||
| \> $\vdash$ \textbf{JournalArticles/} \\
|
||||
| \> $\vdash$ \textbf{Standards/}\\
|
||||
| \> $\vdash$ \textbf{Websites/} \\ %\llcorner
|
||||
|\\
|
||||
$\vdash$ \textbf{Presentation/} \\
|
||||
| \> --presentation.pptx\\
|
||||
| \> --presentation.pdf\\
|
||||
|\\
|
||||
$\vdash$ \textbf{Report/} \\ %\llcorner
|
||||
\> -- Aufgabenstellung.pdf\\
|
||||
\> -- Studienarbeit2.pdf\\
|
||||
\> $\vdash$ \textbf{Latex-Files/} $\Rightarrow$ \textit{editable \LaTeX~files and other included files for this report}\\ %\llcorner
|
||||
\> \> $\vdash$ \textbf{ads/} \> $\Rightarrow$ \textit{Front- and Backmatter}\\
|
||||
\> \> $\vdash$ \textbf{content/} \> $\Rightarrow$ \textit{Main part}\\
|
||||
\> \> $\vdash$ \textbf{images/} \> $\Rightarrow$ \textit{All used images}\\
|
||||
\> \> $\vdash$ \textbf{lang/} \> $\Rightarrow$ \textit{Language files for \LaTeX~template}\\ %\llcorner
|
||||
\end{tabbing}
|
||||
```
|
||||
|
||||
# Contributors
|
||||
|
||||
* Tobias Dreher
|
||||
* Yves Fischer
|
||||
* Michael Gruben
|
||||
* Markus Barthel
|
||||
* Prof. Dr. Rolf Assfalg
|
||||
* Stefan Schneider
|
||||
* Andreas Kießling
|
||||
* Sarah Willibald
|
50
Studienarbeit/settings/document.tex
Normal file
50
Studienarbeit/settings/document.tex
Normal file
@ -0,0 +1,50 @@
|
||||
%!TEX root = ../main.tex
|
||||
|
||||
%% Document language (en, de)
|
||||
\newcommand{\documentLanguage}{de}
|
||||
|
||||
%% Document type
|
||||
% T2\_1000 Project Thesis (Semester 1 & 2)
|
||||
% T2\_2000 Project Thesis (Semester 3 & 4)
|
||||
% T2\_3100 Seminar Paper (Semester 5 & 6)
|
||||
% T2\_3300 Bachelor Thesis
|
||||
\newcommand{\documentType}{Studienarbeit (Modul T3\_3101)}
|
||||
|
||||
\newcommand{\multipleAuthors}{false}
|
||||
\newcommand{\documentAuthor}{Julian Schmidt}
|
||||
\newcommand{\documentTitle}{Java-TX Compiler in Java-TX}
|
||||
\newcommand{\documentPeriod}{12 Wochen}
|
||||
|
||||
\newcommand{\matriculationNumber}{3279342}
|
||||
|
||||
\newcommand{\locationUniversity}{Stuttgart Campus Horb}
|
||||
\newcommand{\department}{Informatik}
|
||||
\newcommand{\course}{HOR-TINF2021}
|
||||
|
||||
\newcommand{\degree}{Bachelor of Science}
|
||||
% INF2014 - INF2016 (MI): Bachelor of Science
|
||||
% INF2014 - INF2016 (IA/IM) : Bachelor of Engineering
|
||||
% INF2017 (all): Bachelor of Science
|
||||
|
||||
% A lecture that the document is written for
|
||||
\newcommand{\lecture}{Software Engineering}
|
||||
% Whether to show the lecture on cover
|
||||
\newcommand{\showLecture}{false}
|
||||
|
||||
\newcommand{\releaseDate}{Juni 2024}
|
||||
\newcommand{\releaseLocation}{Horb am Neckar}
|
||||
|
||||
\newcommand{\companyName}{Hugo Kern und Liebers GmbH \& Co. KG.}
|
||||
\newcommand{\companyLocation}{Schramberg}
|
||||
|
||||
\newcommand{\tutor}{Prof. Dr. habil. Martin Plümicke}
|
||||
\newcommand{\evaluator}{Prof. Dr. habil. Martin Plümicke}
|
||||
|
||||
\newcommand{\linkColor}{00007A}
|
||||
|
||||
\newcommand{\subtype}{\ensuremath{\leq^*}}
|
||||
\newcommand{\supertype}{\ensuremath{\geq^*}}
|
||||
\newcommand{\typeeq}{\ensuremath{=^*}}
|
||||
|
||||
\newcommand{\JTXC}{\glqq{}Java-TX Compiler\grqq{}}
|
||||
\newcommand{\JTXCinJTX}{\glqq{}Java-TX Compiler in Java-TX\grqq{}}
|
55
Studienarbeit/settings/main.tex
Normal file
55
Studienarbeit/settings/main.tex
Normal file
@ -0,0 +1,55 @@
|
||||
%!TEX root = ../main.tex
|
||||
|
||||
%% Citation Styles
|
||||
% http://ctan.mirrorcatalogs.com/macros/latex/contrib/biblatex/doc/biblatex.pdf (3.3.1 Citation Styles)
|
||||
% recommended: z.B numeric-comp, alphabetic,
|
||||
% not recommended: authoryear, alphabetic-verb,
|
||||
\newcommand{\quoteStyle}{alphabetic-verb}
|
||||
|
||||
%% Fonts
|
||||
%% palatino, goudysans, lmodern or libertine
|
||||
\newcommand{\documentFont}{lmodern}
|
||||
|
||||
%% Margin
|
||||
\newcommand{\margin}{2.5cm}
|
||||
|
||||
%% Space between chapter headline and top of page
|
||||
\newcommand{\chapterMargin}{20pt}
|
||||
|
||||
%% Table settings
|
||||
% Column spacing
|
||||
\newcommand{\tableColumnMargin}{10pt}
|
||||
%Line spacing
|
||||
\newcommand{\tableRowMargin}{1.5}
|
||||
|
||||
%% Color settings
|
||||
\newcommand{\defineColors}{%
|
||||
\definecolor{LinkColor}{HTML}{\linkColor}
|
||||
\definecolor{ListingBackground}{HTML}{F8F8F8}
|
||||
}
|
||||
|
||||
%% Syntax Highlighting (Listings)
|
||||
\newcommand{\listingsettings}{%
|
||||
\lstset{%
|
||||
basicstyle=\ttfamily\small, % Typewriter font and small size
|
||||
numbers=left, % Line numbers on the left
|
||||
numberstyle=\tiny\color{gray}, % Line number style
|
||||
stepnumber=1, % Line number step
|
||||
numbersep=5pt, % Distance from the code
|
||||
showspaces=false, % Do not show spaces
|
||||
showstringspaces=false, % Do not show string spaces
|
||||
showtabs=false, % Do not show tabs
|
||||
frame=none, % Frame the code
|
||||
rulecolor=\color{black}, % Frame color
|
||||
tabsize=2, % Tab size
|
||||
captionpos=b, % Caption position
|
||||
breaklines=true, % Automatic line breaking
|
||||
breakatwhitespace=false, % Break lines at whitespace
|
||||
escapeinside={(*@}{@*)}, % Escape to LaTeX with (*@ ... @*)
|
||||
float=htbp, % Float position
|
||||
keywordstyle=\color{blue}, % Keyword style
|
||||
commentstyle=\color{gray}, % Comment style
|
||||
stringstyle=\color{red}, % String style
|
||||
language=Java, % Default language
|
||||
}%
|
||||
}
|
21
Studienarbeit/texput.log
Normal file
21
Studienarbeit/texput.log
Normal file
@ -0,0 +1,21 @@
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.26 (TeX Live 2024/Arch Linux) (preloaded format=latex 2024.5.19) 25 MAY 2024 11:25
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
**
|
||||
|
||||
! Emergency stop.
|
||||
<*>
|
||||
|
||||
End of file on the terminal!
|
||||
|
||||
|
||||
Here is how much of TeX's memory you used:
|
||||
4 strings out of 474117
|
||||
112 string characters out of 5750275
|
||||
1925184 words of memory out of 5000000
|
||||
22465 multiletter control sequences out of 15000+600000
|
||||
558069 words of font info for 36 fonts, out of 8000000 for 9000
|
||||
1141 hyphenation exceptions out of 8191
|
||||
0i,0n,0p,1b,6s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
No pages of output.
|
Loading…
Reference in New Issue
Block a user