# Java Programming Language

## For Beginners <a href="#m_1754139415841401418gmail-java-and-more-forbeginners" id="m_1754139415841401418gmail-java-and-more-forbeginners"></a>

1. Tutorial <https://docs.oracle.com/javase/tutorial/>
2. Video Tutorial . <https://www.udemy.com/java-tutorial/>
3. Even more tutorials <https://www.javacodegeeks.com/2015/01/get-your-advanced-java-programming-degree-with-these-tutorials-and-courses.html>
4. Project Ideas: <http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/>
5. Introduction to Computer Science <https://www.edx.org/course/introduction-computer-science-harvardx-cs50x>
6. <https://www.javacodegeeks.com/2015/06/java-programming-tips-best-practices-beginners.html>

## Links <a href="#m_1754139415841401418gmail-java-and-more-links" id="m_1754139415841401418gmail-java-and-more-links"></a>

1. Tutorials . <http://www.baeldung.com/>
2. Spring Boot <https://spring.io/guides/gs/spring-boot/>
3. Gradle <https://www.tutorialspoint.com/gradle/>
4. gRPC <https://github.com/grpc/grpc-java/tree/master/examples/src/main/java/io/grpc/examples/helloworld>
5. Why field injection is evil <http://olivergierke.de/2013/11/why-field-injection-is-evil/>
6. FileInputStream / FileOutputStream Considered Harmful <https://www.cloudbees.com/blog/fileinputstream-fileoutputstream-considered-harmful>
7. `https://`[`github.com/in28minutes/java-best-practices`](http://github.com/in28minutes/java-best-practices)
8. `https://`[`github.com/cxxr/better-java`](http://github.com/cxxr/better-java)
9. `https://`[`github.com/akullpp/awesome-java`](http://github.com/akullpp/awesome-java)
10. `http://`[`www.javapractices.com/home/HomeAction.do`](http://www.javapractices.com/home/HomeAction.do)
11. `so you want to throw an Exception` [`http://normanmaurer.me/blog/2013/11/09/The-hidden-performance-costs-of-instantiating-Throwables/`](http://normanmaurer.me/blog/2013/11/09/The-hidden-performance-costs-of-instantiating-Throwables/)
12. <https://github.com/Vedenin/useful-java-links>
13. <https://martinfowler.com/bliki/MonolithFirst.html>
14. <https://about.sourcegraph.com/go/grpc-in-production-alan-shreve/>
15. Spring 5 <http://www.baeldung.com/spring-5-functional-web>
16. <http://www.baeldung.com/swagger-2-documentation-for-spring-rest-api>
17. Spring Cloud for Microservices Compared to Kubernetes <https://developers.redhat.com/blog/2016/12/09/spring-cloud-for-microservices-compared-to-kubernetes/>

## Golang for Java Developers <a href="#m_1754139415841401418gmail-java-and-more-golangforjavadevelopers" id="m_1754139415841401418gmail-java-and-more-golangforjavadevelopers"></a>

1. <https://github.com/fstab/go-programming-for-java-developers>
2. <https://steveperkins.com/go-for-java-programmers/>
3. <https://yourbasic.org/golang/go-java-tutorial/>

## Testing  <a href="#m_1754139415841401418gmail-java-and-more-testing" id="m_1754139415841401418gmail-java-and-more-testing"></a>

* <http://spockframework.org/>
* <http://spockframework.org/spock/docs/1.1/index.html>
* <http://www.baeldung.com/groovy-spock>
* <https://thejavatar.com/testing-with-spock/>
* <http://farenda.com/spock-framework-tutorial/>
* <https://github.com/spockframework/spock-example>

## IntelliJ IDEA <a href="#m_1754139415841401418gmail-java-and-more-intellijidea" id="m_1754139415841401418gmail-java-and-more-intellijidea"></a>

1. <https://www.jetbrains.com/toolbox/app/>
2. <https://plugins.jetbrains.com/plugin/9696-java-stream-debugger>
3. <https://plugins.jetbrains.com/plugin/9354-kubernetes-and-openshift-resource-support>
4. <https://plugins.jetbrains.com/plugin/4455-key-promoter>
5. <https://plugins.jetbrains.com/plugin/8277-protobuf-support>
6. <https://plugins.jetbrains.com/plugin/6317-lombok-plugin>
7. <https://plugins.jetbrains.com/plugin/7495--ignore>
8. <https://plugins.jetbrains.com/plugin/4230-bashsupport>
9. <https://plugins.jetbrains.com/top-downloads/idea>
10. <https://www.voxxed.com/blog/presentation/presentation-42-intellij-idea-tips-tricks-45-minutes>
11. <https://www.jetbrains.com/help/idea/sharing-your-ide-settings.html>

## Books <a href="#m_1754139415841401418gmail-java-and-more-books" id="m_1754139415841401418gmail-java-and-more-books"></a>

1. Core Java, Volume I and II; Horstmann
2. OCA/OCP Java SE 7 Programmer I & II Study Guide; Sierra & Bates
3. Effective Java; Bloch
4. Java Concurrency in Practice; Goetz
5. Spring Boot in Action; Walls
6. The Software Craftsman: Professionalism, Pragmatism, Pride; Mancuso
7. Java Performance - The Definitive Guide - Scott Oaks
8. Design Patterns; Gang of Four
9. Head First, Design Patterns; Sierra, Robson, Bates & Freeman
10. Clean Code; Martin
11. The Pragmatic Programmer; Hunt
12. Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne
13. Introduction to Algorithms, Cormen

## Package scope, hexagonal architecture, DDD, CQRS <a href="#m_1754139415841401418gmail-java-and-more-packagescope-hexagonalarchitecture-ddd-cqrs" id="m_1754139415841401418gmail-java-and-more-packagescope-hexagonalarchitecture-ddd-cqrs"></a>

1. (PL) Keep IT clean: mid-sized building blocks and hexagonal architecture &#x20;

   [https://www.youtube.com/watch?v=ma15iBQpmHU](https://www.youtube.com/watch?v=ma15iBQpmHU\&t=771s)
2. (ENG) Keep IT clean: mid-sized building blocks and hexagonal architecture <https://www.youtube.com/watch?v=KrLFs6f2bOA>
3. Slides: <https://jakubn.gitlab.io/keepitclean/#1>
4. Sample code: <https://github.com/jakubnabrdalik/hentai> and <https://github.com/jakubnabrdalik/hentai-cloudy-rental>
5. Hexagonal <http://alistair.cockburn.us/Hexagonal+architecture>
6. Anemic vs Rich Model <https://dzone.com/articles/anaemic-vs-rich-domain-objects-finding-the-balance>
7. CQRS <https://martinfowler.com/bliki/CQRS.html>

## Java inside Docker

With Java 11 should be ok now. "The Java JVM ~~until now doesn’t~~ didn’t provide support to understand that it\~\~‘s\~\~ was running inside a container and that it has some resources like those that are memory and CPU restricted. Because of that, you ~~can’t~~ couldn’t let the JVM ergonomics take the decision by itself regarding the maximum heap size."

* <https://developers.redhat.com/blog/2017/03/14/java-inside-docker/>&#x20;
* <https://engineering.linkedin.com/blog/2016/11/application-pauses-when-running-jvm-inside-linux-control-groups>&#x20;
* <https://jaxenter.com/nobody-puts-java-container-139373.html>
* Why you’re going to FAIL running Java on docker <https://www.youtube.com/watch?v=UrAE0hD1_pM>
* <https://bugs.openjdk.java.net/browse/JDK-8146115>
* <https://stackoverflow.com/questions/53451103/java-using-much-more-memory-than-heap-size-or-size-correctly-docker-memory-limi/53624438#53624438>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kgoralski.gitbook.io/wiki/java-programming-language.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
