This project is geared towards the practical as well as theoretical exploration of the Java language in depth. Primarily, this is to serve as a checklist of my own knowledge in Java but since the best way to learn is to make something that others may learn from as well, this repository has been made public.
The project has dependencies that are managed by Maven (Gradle is not used here at all). The primary reason for this is to enable the inclusion of dependencies such as JDBC, JPA, Spring support tools, et cetera. So the only dependency needed is Maven.
This also deals with certain general problem solving and algorithmic programs as well as design patterns that is just for my own reference. Others are welcome to check those out as well, in any case. There are already more complete and better repositories out there that are more famous for the various implementations of algorithms using Java. This repository is more geared to focus on the nuances of the language in general, rather than recreate the same work.
Here is the link of the repository containing Java programs on algorithms.
Here is the link of the repository containing design patterns elucidated in an intuitive and resourceful manner by experienced and passionate engineers and academic experts.
(Top)
Visual Studio Code with the extension Language Support for Java (TM) by Red Hat
has been used (for Java development, no other extension is compulsorily needed). Sections for other IDEs such as IntelliJ or Eclipse shall be added if those environments bear certain feasilbility that deems their adoption over the present IDE.
The required dependencies (JDK 17 & Maven) have firstly been installed (unless using Docker).
Here are all the methods that can be used to run the programs:
javac fileName.java
\src\main\java
directory (the subdirectory name should be squeezed in only when it does indeed exist for any particular topic):
java com.ragingcoffee.directoryName.<subdirectoryName>.fileName
.devcontainer
directory of this repository, run this to create an image:
docker build -t "raging-coffee:latest" .
docker container run -it test_container:latest
(Top)
Java follows an extremely rigid and inflexible structure of their projects. This sometimes makes it difficult to club resources for a Java project in a way that would seem appropriate and easily accessible. The directory dedicated to spring
contains projects built under the Spring Framework as well as explanations and 'how-to's. Since every Spring project has a preordained way to be run, we cannot do it from the external root directory of the repository.
src\main\java\com\ragingcoffee\spring\<project>
to go to the project. From there we need to run this command for the project to start running in an Apache Tomcat server:
mvn spring-boot:run
None of the dependencies mentioned below are a must for the project, except Maven to test (since it is purely educational and the programs are standalone, not a part of any application). Even these have been used for learning purposes (as well as making the project more accessible and standard) and their guides are in the furtherreading
directory.
(Top)
The list below is not to be followed in any particular order but is more of a record of what has been done and what is yet to be done.
java.net
Packagejava.io
Package
java.lang
Package
java.util
Package
(Top)
Incorporating tests in this repository for every program is a work in progress. Since this repo is more educational and exemplary, there are many classes that exist just to show the behaviour of certain in-built methods provided by the Java API. According to the rules of testing (as well as common sense), it is meaningless to test the use of the built-in API and is adviced against. This is why there would exist certain source files without any test files. For example, testing a program that uses the built-in sort that Java offers (Arrays.sort()
) is meaningless and is not done.
To run tests, Maven may be used. The corresponding command for Maven:
mvn test
JUnit5 has been used to write tests for this project.
(Top)
Certain build tools and applications have been discussed here within the scope of their use in Java development. They may serve as a guide to understand how these tools integrate with Java, along with how they are used for development (this project is an example as well). These can be found under the furtherreading
directory.
(Top)
For this project, the amalgamation of the following books are used:
(Top)
(Top)
CONTRIBUTING.md
first.(Top)