From 7390175796bf25c1940e3ec113dfb71db8ad120f Mon Sep 17 00:00:00 2001 From: Ethan McCue Date: Sun, 28 Sep 2025 08:15:48 -0400 Subject: [PATCH 1/5] ... --- src/SUMMARY.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ theme/index.hbs | 2 +- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index b230d3a..f672e69 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -1312,6 +1312,51 @@ mikamoilanen — 4:01 PM Another solution creates a nice opportunity to introduce creating your own datastructure for more efficient solution: Build a tree out of the codes, where each number has N childs, and traverse throught that tree number-by-number of the phonenumber THEN you could even introduce packing the data as bitvectors in order to have even more compact data structure +* string processing chapter with string formatting, string splitting, StringJoiner and friends +* varargs (this might actually be important since we are hinting at JDK methods using varargs occasionally, e.g. List.of and similar) +* marker interfaces (Interfaces II) +* anonymous class +* BigDecimal / BigInteger +* enums can have fields, constructors and methods as well (a good example that often needs this is a DIRECTION enum (up/down/left/right) with fields for the label/string and the keyboard key or an arrow symbol in either direction) +* sealed classes and interfaces +* try-catch-finally. so far the book only talks about catch but leaves out finally +* try-with-resources and Closeable/AutoCloseable (maybe motivated with Files.lines as example, but that requires streams...) +* Comparators and Comparable +* Random, ThreadLocalRandom.current(), seeding, SecureRandom, nextGaussian() and concept of standard deviation and mean, (honorable mention Math.random()) +* UUID +* Wildcards, bounded wildcards and PECS (the book has a very brief mention of Foo but doesnt go into detail and also doesnt talk about bounds "? extends", "? super" and syntax "? extends A & B & C") +* type tokens "Class" (niche topic but maybe worth mentioning somewhere in the reflection chapter) +* sorting (List.sorted, Collections.sort, Arrays.sort) +* Queues (ArrayDeque) and PriorityQueue (needs comparing beforehand) +* extra chapter on some algodat (trees, graphs, DFS/BFS, mergesort/quicksort, binary search, Tries, potentially also time to make ur own linkedlist and ring buffer/circular array) +* multithreading (Thread, Runnable, Thread-Pools with ExecutorService, Future-API with CompletableFuture) +* scheduling and repeated tasks with ScheduledExecutorService +* short circuit operators &| are never mentioned (probably for good, but perhaps they deserve a small annotation somewhere) +* Optional (also OptionalInt, ...) +* Clone API (dont use), copy constructor +* serialization API (dont use), json with jackson/gson/whatever +* WeakReference (for use in caches) +* class loading/loaders +* environment variables (niche but important for some topics) +* process api, new ProcessBuilder etc +* profiling, time measuring on the jvm, mentioning jmh +* shutdown hooks, "catch/log all" +* RandomAccessFile (niche topic but when u need it its good to know that it exists) +* concept of buffering (and BufferedReader/Writer) and flushing +* useful stuff from the io-stream-api such as BufferedReader/Writer, ByteArrayOutputStream (baos), ByteArrayInputStream (bais) +* bits and bytes, bit-wise ops (&|^, shifts) and related topics such as BitSet, and EnumSet as readable bit-mask alternative +* javas Properties class. its a badly designed class but i think its a good starter for simple config-files (when ur not yet ready for json/yaml/...) +* IDEs +* junit +* general intro talk about memory/space and garbage collection on the JVM +* chapter about "design patterns", even if its just sth like a disclaimer "u might hear about this and that design pattern. can be useful yadayada but dont overdo. learn pros/cons, put it into ur toolbox, use ur own judging." plus maybe an example of a very common pattern plus an antiexample of overusing/abusing that pattern in a way its not helpful (maybe a builder pattern? or a factory...problemfactory joke lol). opportunity to talk about some that people will definitely hear or encounter eventually, such as: DRY, KISS, YAGNI, SOLID, singletons, factories, observer/listener, proxy, delegate, builder + +for appendix and extra stuff: +* http +* sql, jdbc +* javafx/swing/awt +* logging (SLF4J) + --> diff --git a/theme/index.hbs b/theme/index.hbs index da30009..bc69a98 100644 --- a/theme/index.hbs +++ b/theme/index.hbs @@ -154,7 +154,7 @@ {{/if}} - + From 5222145973fef3d0b73acd90affbe2d1a23bf11a Mon Sep 17 00:00:00 2001 From: Ethan McCue Date: Sun, 28 Sep 2025 08:16:27 -0400 Subject: [PATCH 2/5] ... --- .vscode/settings.json | 5 +++++ README.md | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..32cfc61 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.watcherExclude": { + "**/target": true + } +} \ No newline at end of file diff --git a/README.md b/README.md index 5690a74..5c3c3a4 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ mix thereof. None of them are actually needed to understand the mechanics of and behind what we would call "object oriented" or "functional" techniques. They certainly don't work as justification for adding getters and setters to every class. -Feel free to join our [discord server](https://discord.gg/together-java-272761734820003841) +Feel free to join our [discord server](https://discord.gg/xSdQBHfTun) if you have any questions, or require assistance with the project. ## Getting started From a506617411f7a9358f2ebb3b06f72b769f3eb4f3 Mon Sep 17 00:00:00 2001 From: Ethan McCue Date: Fri, 10 Oct 2025 13:40:09 -0400 Subject: [PATCH 3/5] ... --- book.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/book.toml b/book.toml index 829cc9e..3f8360d 100644 --- a/book.toml +++ b/book.toml @@ -19,8 +19,8 @@ default-theme = "light" preferred-default-theme = "light" [output.html.fold] -enable = false # whether or not to enable section folding -level = 0 # the depth to start folding +enable = true # whether or not to enable section folding +level = 1 # the depth to start folding [output.html.playground] editable = true From 157b205b29c659c4de0a8b17003688801598c9a1 Mon Sep 17 00:00:00 2001 From: Ethan McCue Date: Sat, 11 Oct 2025 10:01:07 -0400 Subject: [PATCH 4/5] Update vscodium.md --- src/text_editors/vscodium.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/text_editors/vscodium.md b/src/text_editors/vscodium.md index 1341cb3..3ff77a5 100644 --- a/src/text_editors/vscodium.md +++ b/src/text_editors/vscodium.md @@ -2,7 +2,7 @@ There are a lot of text editors people use to write programs. -For the purposes of this book I am going to reccomend you use +For the purposes of this book I am going to recommend you use one called "[VSCodium](https://vscodium.com/)." If you have already been introduced to a different text editor From 2c695fb7c486f9338c7d3932a415c104c02a1381 Mon Sep 17 00:00:00 2001 From: Ethan McCue Date: Thu, 16 Oct 2025 17:07:22 -0400 Subject: [PATCH 5/5] Update subtraction.md --- src/floating_point_numbers/subtraction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/floating_point_numbers/subtraction.md b/src/floating_point_numbers/subtraction.md index 3e087ac..4e53520 100644 --- a/src/floating_point_numbers/subtraction.md +++ b/src/floating_point_numbers/subtraction.md @@ -5,7 +5,7 @@ You can subtract any two `double`s using the `-` operator. ```java ~void main() { double x = 5.1; -// y will be 4.1 +// y will be -4.1 double y = x - 9.2; IO.println(x);