corrections

This commit is contained in:
Volodymyr Karpenko 2022-10-22 15:54:32 +02:00
parent d07e2d2889
commit 317d9f391f
2 changed files with 12 additions and 38 deletions

Binary file not shown.

View file

@ -51,59 +51,33 @@ We have to choose a Java-based project on GitHub that follows the following
requirements: requirements:
\begin{itemize} \begin{itemize}
\item 100 or greater number of stars; \item 100 or more stars;
\item 100 or greater number of forks; \item 100 or more forks;
\item 10 or more open issues; \item 10 or more open issues;
\item 50.000 or more lines of code. \item 50.000 or more lines of code.
\end{itemize} \end{itemize}
Additionally, we personally added some (less strict) constraints that we thought Additionally, we added some (less strict) constraints that we thought would lead to a more significant and influential analysis:
would lead to a more significant and effective analysis:
\begin{itemize} \begin{itemize}
\item There must be evidence that the project follows business-oriented \item There must be evidence that the project follows business-oriented conventions.
conventions. This excludes amateur or personal projects that due to This excludes amateur or personal projects that might have fewer design pattern applications due to their nature.
their nature might have less design pattern applications. \item Repository data, documentation, and comments must be written in English. Many repositories that are at the top of the search results provided by the hard requirements are not in English, and this drastically hampers our ability to understand the code;
\item Repository data, documentation and comments must be written in the \item The artifact the project produces must not rely on external components and have a streamlined build process, with all code stored in a single Maven/Gradle module. This improves our ability to tinker with the project more quickly and the pattern detection process, which requires all \textit{.class} files related to the project to be stored in a single directory tree.
english language. Many repositories that are at the top of the search
results provided by the hard requirements are not in english and this
drastically hampers our ability to understand the code;
\item The artifact the project produces must not rely on external components
and have a streamlined build process, with all code stored in a single
Maven/Gradle module. This improves both our ability to tinker with the
project more easily and the pattern detection process, which requires all
\textit{.class} files related to the project to be stored in a single
directory tree.
\end{itemize} \end{itemize}
Additionally, instead of querying GitHub directly for projects we decided to see Additionally, instead of querying GitHub directly for projects, we decided to see if libraries we knew already in our Java development career would match the hard and soft requirements we set for ourselves.
if libraries we knew already in our Java development career would match both the
hard and soft requirements we set for ourselves.
Therefore, we considered the following GitHub repositories: Therefore, we considered the following GitHub repositories:
\begin{description} \begin{description}
\item[vavr-io/vavr] a Java library for functional programming, discarded as \item[vavr-io/vavr] a Java library for functional programming, was discarded as the project is less than 20.000 lines of code and does not meet the rigid requirements;
the project is less than 20.000 lines of code and does not meet the hard \item[bitcoin4j/bitcoin4j] a Java implementation of the bitcoin protocol, discarded as the project is distributed in several subprojects, and therefore the build process is nontrivial;
requirements; \item[FasterXML/jackson-core] is the core ''module`` of a Java JSON serialization and deserialization library. We chose this project because it meets the selection criteria. It does not rely on external components for its execution. Finally, the project structure uses a single Maven module for its sources and is thus easy to analyze.
\item[bitcoin4j/bitcoin4j] a Java implementation of the bitcoin protocol,
discarded as the project is distributed in several subprojects and therefore
the build process is nontrivial;
\item[FasterXML/jackson-core] the core ``module'' of a Java JSON serialization
and deserialization library. We chose this project because it meets the
selection criteria, it does not rely on external components for its
execution. Finally, the project structure uses a single Maven module for its
sources and thus easy to analyze.
\end{description} \end{description}
\subsection {The Jackson Core Project} \subsection {The Jackson Core Project}
As already mentioned, Jackson is a library that offers serialization As mentioned, Jackson is a library that offers serialization and deserialization capabilities in JSON format. It is highly extensible and customizable through a robust but flexible API. The library is divided into what the Jackson developers call “modules,” i.e., plug-ins that can augment the serialization and deserialization process. Some modules, like the \textit{jackson-dataformat-xml} module, target different encoding languages like XML.
and deseralization capabilities in JSON format. It is highly extensible
and customizable through a robust but flexible API. The library is divided in
what the Jackson developers call ``modules'', i.e.\ plug-ins that can augment
the serialization and deserialization process. Some modules, like
\textit{jackson-dataformat-xml} module, even allow to target different encoding
languages like XML.
The chosen repository contains only the \textit{core} module of Jackson. The The chosen repository contains only the \textit{core} module of Jackson. The
\textit{core} module implements the necessary library abstractions and \textit{core} module implements the necessary library abstractions and