presently 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. checksums.yaml +7 -0
  2. data/bin/presently +13 -0
  3. data/lib/presently/application.rb +104 -0
  4. data/lib/presently/clock.rb +77 -0
  5. data/lib/presently/display_view.rb +73 -0
  6. data/lib/presently/environment/application.rb +62 -0
  7. data/lib/presently/page.rb +38 -0
  8. data/lib/presently/page.xrb +31 -0
  9. data/lib/presently/presentation.rb +72 -0
  10. data/lib/presently/presentation_controller.rb +181 -0
  11. data/lib/presently/presenter_view.rb +264 -0
  12. data/lib/presently/slide.rb +148 -0
  13. data/lib/presently/slide_view.rb +92 -0
  14. data/lib/presently/state.rb +66 -0
  15. data/lib/presently/version.rb +9 -0
  16. data/lib/presently.rb +9 -0
  17. data/license.md +21 -0
  18. data/public/_components/@socketry/syntax/Syntax/CodeElement.js +337 -0
  19. data/public/_components/@socketry/syntax/Syntax/Errors.js +52 -0
  20. data/public/_components/@socketry/syntax/Syntax/Language/apache.js +49 -0
  21. data/public/_components/@socketry/syntax/Syntax/Language/applescript.js +157 -0
  22. data/public/_components/@socketry/syntax/Syntax/Language/assembly.js +42 -0
  23. data/public/_components/@socketry/syntax/Syntax/Language/bash-script.js +108 -0
  24. data/public/_components/@socketry/syntax/Syntax/Language/bash.js +32 -0
  25. data/public/_components/@socketry/syntax/Syntax/Language/basic.js +232 -0
  26. data/public/_components/@socketry/syntax/Syntax/Language/c++.js +1 -0
  27. data/public/_components/@socketry/syntax/Syntax/Language/c.js +1 -0
  28. data/public/_components/@socketry/syntax/Syntax/Language/clang.js +201 -0
  29. data/public/_components/@socketry/syntax/Syntax/Language/cpp.js +1 -0
  30. data/public/_components/@socketry/syntax/Syntax/Language/csharp.js +166 -0
  31. data/public/_components/@socketry/syntax/Syntax/Language/css.js +244 -0
  32. data/public/_components/@socketry/syntax/Syntax/Language/diff.js +24 -0
  33. data/public/_components/@socketry/syntax/Syntax/Language/go.js +135 -0
  34. data/public/_components/@socketry/syntax/Syntax/Language/haskell.js +110 -0
  35. data/public/_components/@socketry/syntax/Syntax/Language/html.js +69 -0
  36. data/public/_components/@socketry/syntax/Syntax/Language/io.js +68 -0
  37. data/public/_components/@socketry/syntax/Syntax/Language/java.js +134 -0
  38. data/public/_components/@socketry/syntax/Syntax/Language/javascript.js +89 -0
  39. data/public/_components/@socketry/syntax/Syntax/Language/json.js +36 -0
  40. data/public/_components/@socketry/syntax/Syntax/Language/lisp.js +38 -0
  41. data/public/_components/@socketry/syntax/Syntax/Language/lua.js +87 -0
  42. data/public/_components/@socketry/syntax/Syntax/Language/markdown.js +112 -0
  43. data/public/_components/@socketry/syntax/Syntax/Language/nginx.js +37 -0
  44. data/public/_components/@socketry/syntax/Syntax/Language/objective-c.js +1 -0
  45. data/public/_components/@socketry/syntax/Syntax/Language/ocaml.js +225 -0
  46. data/public/_components/@socketry/syntax/Syntax/Language/pascal.js +166 -0
  47. data/public/_components/@socketry/syntax/Syntax/Language/patch.js +2 -0
  48. data/public/_components/@socketry/syntax/Syntax/Language/perl5.js +317 -0
  49. data/public/_components/@socketry/syntax/Syntax/Language/php-script.js +112 -0
  50. data/public/_components/@socketry/syntax/Syntax/Language/php.js +18 -0
  51. data/public/_components/@socketry/syntax/Syntax/Language/plain.js +20 -0
  52. data/public/_components/@socketry/syntax/Syntax/Language/protobuf.js +77 -0
  53. data/public/_components/@socketry/syntax/Syntax/Language/python.js +208 -0
  54. data/public/_components/@socketry/syntax/Syntax/Language/ruby.js +124 -0
  55. data/public/_components/@socketry/syntax/Syntax/Language/scala.js +81 -0
  56. data/public/_components/@socketry/syntax/Syntax/Language/smalltalk.js +30 -0
  57. data/public/_components/@socketry/syntax/Syntax/Language/sql.js +865 -0
  58. data/public/_components/@socketry/syntax/Syntax/Language/super-collider.js +70 -0
  59. data/public/_components/@socketry/syntax/Syntax/Language/swift.js +176 -0
  60. data/public/_components/@socketry/syntax/Syntax/Language/xml.js +76 -0
  61. data/public/_components/@socketry/syntax/Syntax/Language/xrb.js +33 -0
  62. data/public/_components/@socketry/syntax/Syntax/Language/yaml.js +29 -0
  63. data/public/_components/@socketry/syntax/Syntax/Language.js +276 -0
  64. data/public/_components/@socketry/syntax/Syntax/Loader.js +78 -0
  65. data/public/_components/@socketry/syntax/Syntax/Match.js +546 -0
  66. data/public/_components/@socketry/syntax/Syntax/Rule.js +306 -0
  67. data/public/_components/@socketry/syntax/Syntax.js +356 -0
  68. data/public/_components/@socketry/syntax/bin/syntax-ast.js +42 -0
  69. data/public/_components/@socketry/syntax/examples/_template.html +53 -0
  70. data/public/_components/@socketry/syntax/examples/apache.html +72 -0
  71. data/public/_components/@socketry/syntax/examples/applescript.html +72 -0
  72. data/public/_components/@socketry/syntax/examples/assembly.html +74 -0
  73. data/public/_components/@socketry/syntax/examples/bash.html +90 -0
  74. data/public/_components/@socketry/syntax/examples/basic.html +87 -0
  75. data/public/_components/@socketry/syntax/examples/c.html +141 -0
  76. data/public/_components/@socketry/syntax/examples/clang.html +202 -0
  77. data/public/_components/@socketry/syntax/examples/csharp.html +110 -0
  78. data/public/_components/@socketry/syntax/examples/css-colors.html +179 -0
  79. data/public/_components/@socketry/syntax/examples/custom-theme.html +155 -0
  80. data/public/_components/@socketry/syntax/examples/diff.html +142 -0
  81. data/public/_components/@socketry/syntax/examples/examples.css +216 -0
  82. data/public/_components/@socketry/syntax/examples/go.html +413 -0
  83. data/public/_components/@socketry/syntax/examples/haskell.html +373 -0
  84. data/public/_components/@socketry/syntax/examples/html.html +316 -0
  85. data/public/_components/@socketry/syntax/examples/index.html +97 -0
  86. data/public/_components/@socketry/syntax/examples/io.html +552 -0
  87. data/public/_components/@socketry/syntax/examples/java.html +786 -0
  88. data/public/_components/@socketry/syntax/examples/javascript.html +199 -0
  89. data/public/_components/@socketry/syntax/examples/json.html +150 -0
  90. data/public/_components/@socketry/syntax/examples/lisp.html +476 -0
  91. data/public/_components/@socketry/syntax/examples/lua.html +737 -0
  92. data/public/_components/@socketry/syntax/examples/markdown.html +121 -0
  93. data/public/_components/@socketry/syntax/examples/mixed.html +306 -0
  94. data/public/_components/@socketry/syntax/examples/nginx.html +554 -0
  95. data/public/_components/@socketry/syntax/examples/ocaml.html +596 -0
  96. data/public/_components/@socketry/syntax/examples/pascal.html +762 -0
  97. data/public/_components/@socketry/syntax/examples/perl5.html +488 -0
  98. data/public/_components/@socketry/syntax/examples/php-script.html +142 -0
  99. data/public/_components/@socketry/syntax/examples/php.html +95 -0
  100. data/public/_components/@socketry/syntax/examples/plain.html +222 -0
  101. data/public/_components/@socketry/syntax/examples/protobuf.html +405 -0
  102. data/public/_components/@socketry/syntax/examples/python.html +82 -0
  103. data/public/_components/@socketry/syntax/examples/readme.md +79 -0
  104. data/public/_components/@socketry/syntax/examples/ruby.html +58 -0
  105. data/public/_components/@socketry/syntax/examples/scala.html +41 -0
  106. data/public/_components/@socketry/syntax/examples/smalltalk.html +436 -0
  107. data/public/_components/@socketry/syntax/examples/sql.html +373 -0
  108. data/public/_components/@socketry/syntax/examples/super-collider.html +55 -0
  109. data/public/_components/@socketry/syntax/examples/swift.html +176 -0
  110. data/public/_components/@socketry/syntax/examples/wrap-demo.html +103 -0
  111. data/public/_components/@socketry/syntax/examples/xml.html +112 -0
  112. data/public/_components/@socketry/syntax/examples/xrb.html +37 -0
  113. data/public/_components/@socketry/syntax/examples/yaml.html +72 -0
  114. data/public/_components/@socketry/syntax/license.md +21 -0
  115. data/public/_components/@socketry/syntax/package-lock.json +834 -0
  116. data/public/_components/@socketry/syntax/package.json +43 -0
  117. data/public/_components/@socketry/syntax/readme.md +162 -0
  118. data/public/_components/@socketry/syntax/test/Syntax/CodeElement.js +306 -0
  119. data/public/_components/@socketry/syntax/test/Syntax/ErrorHandling.js +85 -0
  120. data/public/_components/@socketry/syntax/test/Syntax/Language/apache.js +153 -0
  121. data/public/_components/@socketry/syntax/test/Syntax/Language/applescript.js +198 -0
  122. data/public/_components/@socketry/syntax/test/Syntax/Language/assembly.js +209 -0
  123. data/public/_components/@socketry/syntax/test/Syntax/Language/bash-script.js +225 -0
  124. data/public/_components/@socketry/syntax/test/Syntax/Language/bash.js +162 -0
  125. data/public/_components/@socketry/syntax/test/Syntax/Language/basic.js +265 -0
  126. data/public/_components/@socketry/syntax/test/Syntax/Language/clang.js +390 -0
  127. data/public/_components/@socketry/syntax/test/Syntax/Language/csharp.js +436 -0
  128. data/public/_components/@socketry/syntax/test/Syntax/Language/css.js +431 -0
  129. data/public/_components/@socketry/syntax/test/Syntax/Language/diff.js +206 -0
  130. data/public/_components/@socketry/syntax/test/Syntax/Language/go.js +386 -0
  131. data/public/_components/@socketry/syntax/test/Syntax/Language/haskell.js +454 -0
  132. data/public/_components/@socketry/syntax/test/Syntax/Language/html.js +111 -0
  133. data/public/_components/@socketry/syntax/test/Syntax/Language/io.js +229 -0
  134. data/public/_components/@socketry/syntax/test/Syntax/Language/java.js +362 -0
  135. data/public/_components/@socketry/syntax/test/Syntax/Language/javascript.js +101 -0
  136. data/public/_components/@socketry/syntax/test/Syntax/Language/json.js +101 -0
  137. data/public/_components/@socketry/syntax/test/Syntax/Language/lisp.js +224 -0
  138. data/public/_components/@socketry/syntax/test/Syntax/Language/lua.js +307 -0
  139. data/public/_components/@socketry/syntax/test/Syntax/Language/markdown.js +163 -0
  140. data/public/_components/@socketry/syntax/test/Syntax/Language/nginx.js +267 -0
  141. data/public/_components/@socketry/syntax/test/Syntax/Language/ocaml.js +299 -0
  142. data/public/_components/@socketry/syntax/test/Syntax/Language/pascal.js +311 -0
  143. data/public/_components/@socketry/syntax/test/Syntax/Language/perl5.js +333 -0
  144. data/public/_components/@socketry/syntax/test/Syntax/Language/php-script.js +197 -0
  145. data/public/_components/@socketry/syntax/test/Syntax/Language/php.js +92 -0
  146. data/public/_components/@socketry/syntax/test/Syntax/Language/plain.js +327 -0
  147. data/public/_components/@socketry/syntax/test/Syntax/Language/protobuf.js +294 -0
  148. data/public/_components/@socketry/syntax/test/Syntax/Language/python.js +213 -0
  149. data/public/_components/@socketry/syntax/test/Syntax/Language/ruby.js +70 -0
  150. data/public/_components/@socketry/syntax/test/Syntax/Language/scala.js +75 -0
  151. data/public/_components/@socketry/syntax/test/Syntax/Language/smalltalk.js +223 -0
  152. data/public/_components/@socketry/syntax/test/Syntax/Language/sql.js +281 -0
  153. data/public/_components/@socketry/syntax/test/Syntax/Language/super-collider.js +66 -0
  154. data/public/_components/@socketry/syntax/test/Syntax/Language/swift.js +71 -0
  155. data/public/_components/@socketry/syntax/test/Syntax/Language/xml.js +170 -0
  156. data/public/_components/@socketry/syntax/test/Syntax/Language/xrb.js +57 -0
  157. data/public/_components/@socketry/syntax/test/Syntax/Language/yaml.js +123 -0
  158. data/public/_components/@socketry/syntax/test/Syntax/Language.js +62 -0
  159. data/public/_components/@socketry/syntax/test/Syntax/Match.js +40 -0
  160. data/public/_components/@socketry/syntax/test/Syntax/Rule.js +251 -0
  161. data/public/_components/@socketry/syntax/test/Syntax.js +38 -0
  162. data/public/_components/@socketry/syntax/test/helpers/ast-matcher.js +90 -0
  163. data/public/_components/@socketry/syntax/themes/base/apache.css +1 -0
  164. data/public/_components/@socketry/syntax/themes/base/applescript.css +1 -0
  165. data/public/_components/@socketry/syntax/themes/base/assembly.css +1 -0
  166. data/public/_components/@socketry/syntax/themes/base/bash.css +1 -0
  167. data/public/_components/@socketry/syntax/themes/base/basic.css +1 -0
  168. data/public/_components/@socketry/syntax/themes/base/c.css +1 -0
  169. data/public/_components/@socketry/syntax/themes/base/clang.css +0 -0
  170. data/public/_components/@socketry/syntax/themes/base/csharp.css +1 -0
  171. data/public/_components/@socketry/syntax/themes/base/css.css +22 -0
  172. data/public/_components/@socketry/syntax/themes/base/diff.css +48 -0
  173. data/public/_components/@socketry/syntax/themes/base/go.css +1 -0
  174. data/public/_components/@socketry/syntax/themes/base/haskell.css +1 -0
  175. data/public/_components/@socketry/syntax/themes/base/html.css +1 -0
  176. data/public/_components/@socketry/syntax/themes/base/io.css +1 -0
  177. data/public/_components/@socketry/syntax/themes/base/java.css +1 -0
  178. data/public/_components/@socketry/syntax/themes/base/javascript.css +1 -0
  179. data/public/_components/@socketry/syntax/themes/base/json.css +41 -0
  180. data/public/_components/@socketry/syntax/themes/base/lisp.css +1 -0
  181. data/public/_components/@socketry/syntax/themes/base/lua.css +1 -0
  182. data/public/_components/@socketry/syntax/themes/base/markdown.css +16 -0
  183. data/public/_components/@socketry/syntax/themes/base/nginx.css +1 -0
  184. data/public/_components/@socketry/syntax/themes/base/ocaml.css +1 -0
  185. data/public/_components/@socketry/syntax/themes/base/pascal.css +1 -0
  186. data/public/_components/@socketry/syntax/themes/base/perl5.css +1 -0
  187. data/public/_components/@socketry/syntax/themes/base/php-script.css +1 -0
  188. data/public/_components/@socketry/syntax/themes/base/php.css +1 -0
  189. data/public/_components/@socketry/syntax/themes/base/plain.css +1 -0
  190. data/public/_components/@socketry/syntax/themes/base/protobuf.css +1 -0
  191. data/public/_components/@socketry/syntax/themes/base/python.css +1 -0
  192. data/public/_components/@socketry/syntax/themes/base/ruby.css +23 -0
  193. data/public/_components/@socketry/syntax/themes/base/scala.css +3 -0
  194. data/public/_components/@socketry/syntax/themes/base/smalltalk.css +1 -0
  195. data/public/_components/@socketry/syntax/themes/base/sql.css +1 -0
  196. data/public/_components/@socketry/syntax/themes/base/super-collider.css +33 -0
  197. data/public/_components/@socketry/syntax/themes/base/swift.css +1 -0
  198. data/public/_components/@socketry/syntax/themes/base/syntax.css +63 -0
  199. data/public/_components/@socketry/syntax/themes/base/xml.css +1 -0
  200. data/public/_components/@socketry/syntax/themes/base/xrb.css +29 -0
  201. data/public/_components/@socketry/syntax/themes/base/yaml.css +1 -0
  202. data/public/_components/@socketry/syntax/themes/theming.md +233 -0
  203. data/public/_components/@socketry/syntax/update-examples.js +135 -0
  204. data/public/_static/index.css +593 -0
  205. data/public/application.js +147 -0
  206. data/readme.md +69 -0
  207. data/releases.md +3 -0
  208. data/templates/code.xrb +12 -0
  209. data/templates/default.xrb +5 -0
  210. data/templates/image.xrb +8 -0
  211. data/templates/section.xrb +5 -0
  212. data/templates/title.xrb +8 -0
  213. data/templates/translation.xrb +8 -0
  214. data/templates/two_column.xrb +8 -0
  215. metadata +280 -0
@@ -0,0 +1,786 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Java Examples - @socketry/syntax</title>
7
+ <link rel="stylesheet" href="examples.css">
8
+ </head>
9
+ <body>
10
+ <header>
11
+ <h1>Java Examples</h1>
12
+ <p class="subtitle">Object-oriented programming with Java</p>
13
+ </header>
14
+
15
+ <nav>
16
+ <a href="index.html">Back to Examples</a>
17
+ <a href="javascript.html">JavaScript</a>
18
+ <a href="scala.html">Scala</a>
19
+ </nav>
20
+
21
+ <div class="example">
22
+ <h2>Basic Class Definition</h2>
23
+ <p class="description">Simple class example with constructors, getters, and setters:</p>
24
+
25
+ <pre><code class="language-java">// Simple class example
26
+ public class Person {
27
+ // Instance variables
28
+ private String name;
29
+ private int age;
30
+
31
+ // Constructor
32
+ public Person(String name, int age) {
33
+ this.name = name;
34
+ this.age = age;
35
+ }
36
+
37
+ // Getter methods
38
+ public String getName() {
39
+ return name;
40
+ }
41
+
42
+ public int getAge() {
43
+ return age;
44
+ }
45
+
46
+ // Setter methods
47
+ public void setName(String name) {
48
+ this.name = name;
49
+ }
50
+
51
+ public void setAge(int age) {
52
+ if (age >= 0) {
53
+ this.age = age;
54
+ }
55
+ }
56
+ }
57
+ </code></pre>
58
+ </div>
59
+
60
+ <div class="example">
61
+ <h2>Control Flow</h2>
62
+ <p class="description">If-else statements, switch, and ternary operators:</p>
63
+
64
+ <pre><code class="language-java">public class ControlFlow {
65
+ // if-else statement
66
+ public static String checkNumber(int num) {
67
+ if (num > 0) {
68
+ return "positive";
69
+ } else if (num < 0) {
70
+ return "negative";
71
+ } else {
72
+ return "zero";
73
+ }
74
+ }
75
+
76
+ // switch statement
77
+ public static String getDayName(int day) {
78
+ switch (day) {
79
+ case 1:
80
+ return "Monday";
81
+ case 2:
82
+ return "Tuesday";
83
+ case 3:
84
+ return "Wednesday";
85
+ case 4:
86
+ return "Thursday";
87
+ case 5:
88
+ return "Friday";
89
+ case 6:
90
+ return "Saturday";
91
+ case 7:
92
+ return "Sunday";
93
+ default:
94
+ return "Invalid day";
95
+ }
96
+ }
97
+
98
+ // Ternary operator
99
+ public static int max(int a, int b) {
100
+ return (a > b) ? a : b;
101
+ }
102
+ }
103
+ </code></pre>
104
+ </div>
105
+
106
+ <div class="example">
107
+ <h2>Loops</h2>
108
+ <p class="description">For loops, while loops, and enhanced for loops:</p>
109
+
110
+ <pre><code class="language-java">public class Loops {
111
+ // for loop
112
+ public static void printNumbers() {
113
+ for (int i = 0; i < 10; i++) {
114
+ System.out.println(i);
115
+ }
116
+ }
117
+
118
+ // enhanced for loop (for-each)
119
+ public static void printArray(String[] array) {
120
+ for (String item : array) {
121
+ System.out.println(item);
122
+ }
123
+ }
124
+
125
+ // while loop
126
+ public static int factorial(int n) {
127
+ int result = 1;
128
+ int i = 1;
129
+ while (i <= n) {
130
+ result *= i;
131
+ i++;
132
+ }
133
+ return result;
134
+ }
135
+
136
+ // do-while loop
137
+ public static void doWhileExample() {
138
+ int i = 0;
139
+ do {
140
+ System.out.println(i);
141
+ i++;
142
+ } while (i < 5);
143
+ }
144
+
145
+ // break and continue
146
+ public static void breakContinueExample() {
147
+ for (int i = 0; i < 10; i++) {
148
+ if (i == 3) {
149
+ continue; // Skip 3
150
+ }
151
+ if (i == 7) {
152
+ break; // Stop at 7
153
+ }
154
+ System.out.println(i);
155
+ }
156
+ }
157
+ }
158
+ </code></pre>
159
+ </div>
160
+
161
+ <div class="example">
162
+ <h2>Arrays and Collections</h2>
163
+ <p class="description">Working with arrays, ArrayList, HashMap, and HashSet:</p>
164
+
165
+ <pre><code class="language-java">import java.util.ArrayList;
166
+ import java.util.HashMap;
167
+ import java.util.HashSet;
168
+
169
+ public class Collections {
170
+ // Arrays
171
+ public static void arrayExample() {
172
+ int[] numbers = {1, 2, 3, 4, 5};
173
+ String[] names = new String[3];
174
+ names[0] = "Alice";
175
+ names[1] = "Bob";
176
+ names[2] = "Charlie";
177
+
178
+ // Multi-dimensional array
179
+ int[][] matrix = {
180
+ {1, 2, 3},
181
+ {4, 5, 6},
182
+ {7, 8, 9}
183
+ };
184
+ }
185
+
186
+ // ArrayList
187
+ public static void arrayListExample() {
188
+ ArrayList<String> list = new ArrayList<>();
189
+ list.add("Apple");
190
+ list.add("Banana");
191
+ list.add("Cherry");
192
+
193
+ // Iterate
194
+ for (String fruit : list) {
195
+ System.out.println(fruit);
196
+ }
197
+
198
+ // Access by index
199
+ String first = list.get(0);
200
+ list.remove(1);
201
+ int size = list.size();
202
+ }
203
+
204
+ // HashMap
205
+ public static void hashMapExample() {
206
+ HashMap<String, Integer> map = new HashMap<>();
207
+ map.put("Alice", 30);
208
+ map.put("Bob", 25);
209
+ map.put("Charlie", 35);
210
+
211
+ int age = map.get("Alice");
212
+ boolean hasKey = map.containsKey("Bob");
213
+
214
+ // Iterate
215
+ for (String name : map.keySet()) {
216
+ System.out.println(name + ": " + map.get(name));
217
+ }
218
+ }
219
+
220
+ // HashSet
221
+ public static void hashSetExample() {
222
+ HashSet<Integer> set = new HashSet<>();
223
+ set.add(1);
224
+ set.add(2);
225
+ set.add(3);
226
+ set.add(2); // Duplicate ignored
227
+
228
+ boolean contains = set.contains(2);
229
+ set.remove(3);
230
+ }
231
+ }
232
+ </code></pre>
233
+ </div>
234
+
235
+ <div class="example">
236
+ <h2>Exception Handling</h2>
237
+ <p class="description">Try-catch-finally, try-with-resources, and custom exceptions:</p>
238
+
239
+ <pre><code class="language-java">public class ExceptionHandling {
240
+ // Try-catch
241
+ public static int divide(int a, int b) {
242
+ try {
243
+ return a / b;
244
+ } catch (ArithmeticException e) {
245
+ System.err.println("Cannot divide by zero");
246
+ return 0;
247
+ }
248
+ }
249
+
250
+ // Try-catch-finally
251
+ public static void readFile(String filename) {
252
+ FileReader reader = null;
253
+ try {
254
+ reader = new FileReader(filename);
255
+ // Read file...
256
+ } catch (FileNotFoundException e) {
257
+ System.err.println("File not found: " + filename);
258
+ } catch (IOException e) {
259
+ System.err.println("Error reading file");
260
+ } finally {
261
+ if (reader != null) {
262
+ try {
263
+ reader.close();
264
+ } catch (IOException e) {
265
+ // Ignore
266
+ }
267
+ }
268
+ }
269
+ }
270
+
271
+ // Try-with-resources (Java 7+)
272
+ public static void readFileModern(String filename) {
273
+ try (FileReader reader = new FileReader(filename)) {
274
+ // Read file...
275
+ } catch (IOException e) {
276
+ System.err.println("Error: " + e.getMessage());
277
+ }
278
+ }
279
+
280
+ // Throwing exceptions
281
+ public static void validateAge(int age) throws IllegalArgumentException {
282
+ if (age < 0 || age > 150) {
283
+ throw new IllegalArgumentException("Invalid age: " + age);
284
+ }
285
+ }
286
+
287
+ // Custom exception
288
+ public static class InvalidInputException extends Exception {
289
+ public InvalidInputException(String message) {
290
+ super(message);
291
+ }
292
+ }
293
+ }
294
+ </code></pre>
295
+ </div>
296
+
297
+ <div class="example">
298
+ <h2>Inheritance</h2>
299
+ <p class="description">Base classes, derived classes, and method overriding:</p>
300
+
301
+ <pre><code class="language-java">// Base class
302
+ public class Animal {
303
+ protected String name;
304
+
305
+ public Animal(String name) {
306
+ this.name = name;
307
+ }
308
+
309
+ public void eat() {
310
+ System.out.println(name + " is eating");
311
+ }
312
+
313
+ public void sleep() {
314
+ System.out.println(name + " is sleeping");
315
+ }
316
+ }
317
+
318
+ // Derived class
319
+ public class Dog extends Animal {
320
+ private String breed;
321
+
322
+ public Dog(String name, String breed) {
323
+ super(name); // Call parent constructor
324
+ this.breed = breed;
325
+ }
326
+
327
+ // Override method
328
+ @Override
329
+ public void eat() {
330
+ System.out.println(name + " the dog is eating");
331
+ }
332
+
333
+ // New method
334
+ public void bark() {
335
+ System.out.println(name + " says: Woof!");
336
+ }
337
+ }
338
+
339
+ // Another derived class
340
+ public class Cat extends Animal {
341
+ public Cat(String name) {
342
+ super(name);
343
+ }
344
+
345
+ @Override
346
+ public void eat() {
347
+ System.out.println(name + " the cat is eating");
348
+ }
349
+
350
+ public void meow() {
351
+ System.out.println(name + " says: Meow!");
352
+ }
353
+ }
354
+ </code></pre>
355
+ </div>
356
+
357
+ <div class="example">
358
+ <h2>Interfaces</h2>
359
+ <p class="description">Interface definitions and implementations:</p>
360
+
361
+ <pre><code class="language-java">// Interface definition
362
+ public interface Drawable {
363
+ void draw();
364
+ void setColor(String color);
365
+ String getColor();
366
+ }
367
+
368
+ // Another interface
369
+ public interface Resizable {
370
+ void resize(double factor);
371
+ }
372
+
373
+ // Implementing single interface
374
+ public class Circle implements Drawable {
375
+ private double radius;
376
+ private String color;
377
+
378
+ public Circle(double radius) {
379
+ this.radius = radius;
380
+ this.color = "black";
381
+ }
382
+
383
+ @Override
384
+ public void draw() {
385
+ System.out.println("Drawing a " + color + " circle");
386
+ }
387
+
388
+ @Override
389
+ public void setColor(String color) {
390
+ this.color = color;
391
+ }
392
+
393
+ @Override
394
+ public String getColor() {
395
+ return color;
396
+ }
397
+ }
398
+
399
+ // Implementing multiple interfaces
400
+ public class Rectangle implements Drawable, Resizable {
401
+ private double width;
402
+ private double height;
403
+ private String color;
404
+
405
+ public Rectangle(double width, double height) {
406
+ this.width = width;
407
+ this.height = height;
408
+ this.color = "black";
409
+ }
410
+
411
+ @Override
412
+ public void draw() {
413
+ System.out.println("Drawing a " + color + " rectangle");
414
+ }
415
+
416
+ @Override
417
+ public void setColor(String color) {
418
+ this.color = color;
419
+ }
420
+
421
+ @Override
422
+ public String getColor() {
423
+ return color;
424
+ }
425
+
426
+ @Override
427
+ public void resize(double factor) {
428
+ width *= factor;
429
+ height *= factor;
430
+ }
431
+ }
432
+ </code></pre>
433
+ </div>
434
+
435
+ <div class="example">
436
+ <h2>Abstract Classes</h2>
437
+ <p class="description">Abstract classes with abstract and concrete methods:</p>
438
+
439
+ <pre><code class="language-java">// Abstract class
440
+ public abstract class Shape {
441
+ protected String color;
442
+
443
+ public Shape(String color) {
444
+ this.color = color;
445
+ }
446
+
447
+ // Abstract method (no implementation)
448
+ public abstract double area();
449
+
450
+ // Concrete method
451
+ public void printArea() {
452
+ System.out.println("Area: " + area());
453
+ }
454
+ }
455
+
456
+ // Concrete implementation
457
+ public class Square extends Shape {
458
+ private double side;
459
+
460
+ public Square(double side, String color) {
461
+ super(color);
462
+ this.side = side;
463
+ }
464
+
465
+ @Override
466
+ public double area() {
467
+ return side * side;
468
+ }
469
+ }
470
+
471
+ public class Triangle extends Shape {
472
+ private double base;
473
+ private double height;
474
+
475
+ public Triangle(double base, double height, String color) {
476
+ super(color);
477
+ this.base = base;
478
+ this.height = height;
479
+ }
480
+
481
+ @Override
482
+ public double area() {
483
+ return 0.5 * base * height;
484
+ }
485
+ }
486
+ </code></pre>
487
+ </div>
488
+
489
+ <div class="example">
490
+ <h2>Generics</h2>
491
+ <p class="description">Generic classes, methods, and bounded type parameters:</p>
492
+
493
+ <pre><code class="language-java">// Generic class
494
+ public class Box<T> {
495
+ private T value;
496
+
497
+ public void set(T value) {
498
+ this.value = value;
499
+ }
500
+
501
+ public T get() {
502
+ return value;
503
+ }
504
+ }
505
+
506
+ // Using generic class
507
+ public static void genericExample() {
508
+ Box<String> stringBox = new Box<>();
509
+ stringBox.set("Hello");
510
+ String s = stringBox.get();
511
+
512
+ Box<Integer> intBox = new Box<>();
513
+ intBox.set(42);
514
+ int i = intBox.get();
515
+ }
516
+
517
+ // Generic method
518
+ public static <T> void printArray(T[] array) {
519
+ for (T element : array) {
520
+ System.out.println(element);
521
+ }
522
+ }
523
+
524
+ // Bounded type parameters
525
+ public static <T extends Comparable<T>> T max(T a, T b) {
526
+ return (a.compareTo(b) > 0) ? a : b;
527
+ }
528
+
529
+ // Generic interface
530
+ public interface Pair<K, V> {
531
+ K getKey();
532
+ V getValue();
533
+ }
534
+ </code></pre>
535
+ </div>
536
+
537
+ <div class="example">
538
+ <h2>Enumerations</h2>
539
+ <p class="description">Simple and complex enum definitions:</p>
540
+
541
+ <pre><code class="language-java">// Simple enum
542
+ public enum Day {
543
+ MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
544
+ }
545
+
546
+ // Enum with fields and methods
547
+ public enum Planet {
548
+ MERCURY(3.303e+23, 2.4397e6),
549
+ VENUS(4.869e+24, 6.0518e6),
550
+ EARTH(5.976e+24, 6.37814e6),
551
+ MARS(6.421e+23, 3.3972e6);
552
+
553
+ private final double mass; // in kilograms
554
+ private final double radius; // in meters
555
+
556
+ Planet(double mass, double radius) {
557
+ this.mass = mass;
558
+ this.radius = radius;
559
+ }
560
+
561
+ public double getMass() {
562
+ return mass;
563
+ }
564
+
565
+ public double getRadius() {
566
+ return radius;
567
+ }
568
+
569
+ public double surfaceGravity() {
570
+ final double G = 6.67300E-11;
571
+ return G * mass / (radius * radius);
572
+ }
573
+ }
574
+
575
+ // Using enums
576
+ public static void enumExample() {
577
+ Day today = Day.MONDAY;
578
+
579
+ switch (today) {
580
+ case MONDAY:
581
+ System.out.println("Start of week");
582
+ break;
583
+ case FRIDAY:
584
+ System.out.println("Almost weekend!");
585
+ break;
586
+ case SATURDAY:
587
+ case SUNDAY:
588
+ System.out.println("Weekend!");
589
+ break;
590
+ default:
591
+ System.out.println("Midweek");
592
+ }
593
+
594
+ double earthGravity = Planet.EARTH.surfaceGravity();
595
+ }
596
+ </code></pre>
597
+ </div>
598
+
599
+ <div class="example">
600
+ <h2>Static and Final</h2>
601
+ <p class="description">Static members, constants, and final classes:</p>
602
+
603
+ <pre><code class="language-java">public class MathUtils {
604
+ // Static constant
605
+ public static final double PI = 3.14159;
606
+
607
+ // Static variable
608
+ private static int instanceCount = 0;
609
+
610
+ // Static method
611
+ public static int add(int a, int b) {
612
+ return a + b;
613
+ }
614
+
615
+ // Static initializer block
616
+ static {
617
+ System.out.println("MathUtils class loaded");
618
+ instanceCount = 0;
619
+ }
620
+
621
+ // Instance method
622
+ public MathUtils() {
623
+ instanceCount++;
624
+ }
625
+
626
+ public static int getInstanceCount() {
627
+ return instanceCount;
628
+ }
629
+ }
630
+
631
+ // Using static members
632
+ public static void staticExample() {
633
+ double circumference = 2 * MathUtils.PI * 5;
634
+ int sum = MathUtils.add(3, 4);
635
+
636
+ MathUtils m1 = new MathUtils();
637
+ MathUtils m2 = new MathUtils();
638
+ int count = MathUtils.getInstanceCount(); // 2
639
+ }
640
+
641
+ // Final class (cannot be extended)
642
+ public final class ImmutableClass {
643
+ private final String value;
644
+
645
+ public ImmutableClass(String value) {
646
+ this.value = value;
647
+ }
648
+
649
+ public String getValue() {
650
+ return value;
651
+ }
652
+ }
653
+ </code></pre>
654
+ </div>
655
+
656
+ <div class="example">
657
+ <h2>Lambda Expressions (Java 8+)</h2>
658
+ <p class="description">Functional interfaces, lambdas, and method references:</p>
659
+
660
+ <pre><code class="language-java">import java.util.Arrays;
661
+ import java.util.List;
662
+ import java.util.function.Predicate;
663
+
664
+ public class LambdaExamples {
665
+ // Functional interface
666
+ @FunctionalInterface
667
+ interface Operation {
668
+ int apply(int a, int b);
669
+ }
670
+
671
+ public static void lambdaExample() {
672
+ // Lambda expression
673
+ Operation add = (a, b) -> a + b;
674
+ Operation multiply = (a, b) -> a * b;
675
+
676
+ System.out.println(add.apply(5, 3)); // 8
677
+ System.out.println(multiply.apply(5, 3)); // 15
678
+
679
+ // Using lambdas with collections
680
+ List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
681
+
682
+ // forEach with lambda
683
+ names.forEach(name -> System.out.println(name));
684
+
685
+ // Filter with lambda
686
+ names.stream()
687
+ .filter(name -> name.startsWith("A"))
688
+ .forEach(System.out::println);
689
+
690
+ // Map with lambda
691
+ names.stream()
692
+ .map(name -> name.toUpperCase())
693
+ .forEach(System.out::println);
694
+
695
+ // Reduce with lambda
696
+ List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
697
+ int sum = numbers.stream()
698
+ .reduce(0, (a, b) -> a + b);
699
+ }
700
+
701
+ // Method reference
702
+ public static void methodReferenceExample() {
703
+ List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
704
+
705
+ // Instance method reference
706
+ names.forEach(System.out::println);
707
+
708
+ // Static method reference
709
+ names.stream()
710
+ .map(String::toUpperCase)
711
+ .forEach(System.out::println);
712
+ }
713
+ }
714
+ </code></pre>
715
+ </div>
716
+
717
+ <div class="example">
718
+ <h2>Streams (Java 8+)</h2>
719
+ <p class="description">Stream API for functional-style operations on collections:</p>
720
+
721
+ <pre><code class="language-java">import java.util.*;
722
+ import java.util.stream.*;
723
+
724
+ public class StreamExamples {
725
+ public static void streamExample() {
726
+ List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
727
+
728
+ // Filter even numbers
729
+ List<Integer> evens = numbers.stream()
730
+ .filter(n -> n % 2 == 0)
731
+ .collect(Collectors.toList());
732
+
733
+ // Map and collect
734
+ List<Integer> squares = numbers.stream()
735
+ .map(n -> n * n)
736
+ .collect(Collectors.toList());
737
+
738
+ // Sum using reduce
739
+ int sum = numbers.stream()
740
+ .reduce(0, Integer::sum);
741
+
742
+ // Find first
743
+ Optional<Integer> first = numbers.stream()
744
+ .filter(n -> n > 5)
745
+ .findFirst();
746
+
747
+ // Count
748
+ long count = numbers.stream()
749
+ .filter(n -> n % 2 == 0)
750
+ .count();
751
+
752
+ // Sorting
753
+ List<String> sorted = Arrays.asList("Charlie", "Alice", "Bob")
754
+ .stream()
755
+ .sorted()
756
+ .collect(Collectors.toList());
757
+
758
+ // Distinct
759
+ List<Integer> distinct = Arrays.asList(1, 2, 2, 3, 3, 3)
760
+ .stream()
761
+ .distinct()
762
+ .collect(Collectors.toList());
763
+
764
+ // Limit and skip
765
+ List<Integer> limited = numbers.stream()
766
+ .skip(3)
767
+ .limit(4)
768
+ .collect(Collectors.toList());
769
+ }
770
+ }
771
+ </code></pre>
772
+ </div>
773
+
774
+ <script type="module">
775
+ import Syntax from '../Syntax.js';
776
+ import registerJava from '../Syntax/Language/java.js';
777
+
778
+ registerJava(Syntax.default);
779
+
780
+ await Syntax.highlight({
781
+ autoUpgrade: true,
782
+ syntax: Syntax.default
783
+ });
784
+ </script>
785
+ </body>
786
+ </html>