From 42bf460034ea0268cf18d9364a679d25fb5ed671 Mon Sep 17 00:00:00 2001
From: Guruprasad Kulkarni <guruprasad.kulkarni@idnow.de>
Date: Mon, 8 Jan 2018 11:15:18 +0100
Subject: [PATCH 01/14] fixed

---
 jpms/src/com/linux/java/se/nine/jpms/SimpleUiApp.java | 5 +++++
 jpms/src/com/module-info.java                         | 3 ++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/jpms/src/com/linux/java/se/nine/jpms/SimpleUiApp.java b/jpms/src/com/linux/java/se/nine/jpms/SimpleUiApp.java
index 6f1ba0a..6ee2b48 100644
--- a/jpms/src/com/linux/java/se/nine/jpms/SimpleUiApp.java
+++ b/jpms/src/com/linux/java/se/nine/jpms/SimpleUiApp.java
@@ -24,3 +24,8 @@ public void start(Stage primaryStage) {
 		primaryStage.show();
 	}
 }
+
+
+
+// javac com/module-info.java  com/linux/java/se/nine/jpms/SimpleUiApp.java
+// java --module-path com.linux.java.se.nine.jpms com.linux.java.se.nine.jpms.SimpleUiApp
\ No newline at end of file
diff --git a/jpms/src/com/module-info.java b/jpms/src/com/module-info.java
index f3e3700..3f12250 100644
--- a/jpms/src/com/module-info.java
+++ b/jpms/src/com/module-info.java
@@ -1,3 +1,4 @@
 module com.linux.java.se.nine.jpms {
-	
+	requires javafx.graphics;
+	requires javafx.controls;
 }
\ No newline at end of file

From bf549f7ac0a2350ba1902259328b2df72e8d81f4 Mon Sep 17 00:00:00 2001
From: Guruprasad Kulkarni <guruprasad.kulkarni@idnow.de>
Date: Mon, 8 Jan 2018 12:14:04 +0100
Subject: [PATCH 02/14] Started to add internal package

---
 .../linux/java/se/nine/jpms/SimpleUiApp.java  | 23 ++++++++++++++
 .../nine/jpms/internal/GenerateContents.java  | 21 +++++++++++++
 jpms/{src => }/com/module-info.java           |  0
 .../linux/java/se/nine/jpms/SimpleUiApp.java  | 31 -------------------
 4 files changed, 44 insertions(+), 31 deletions(-)
 create mode 100644 jpms/com/linux/java/se/nine/jpms/SimpleUiApp.java
 create mode 100644 jpms/com/linux/java/se/nine/jpms/internal/GenerateContents.java
 rename jpms/{src => }/com/module-info.java (100%)
 delete mode 100644 jpms/src/com/linux/java/se/nine/jpms/SimpleUiApp.java

diff --git a/jpms/com/linux/java/se/nine/jpms/SimpleUiApp.java b/jpms/com/linux/java/se/nine/jpms/SimpleUiApp.java
new file mode 100644
index 0000000..7551645
--- /dev/null
+++ b/jpms/com/linux/java/se/nine/jpms/SimpleUiApp.java
@@ -0,0 +1,23 @@
+package com.linux.java.se.nine.jpms;
+
+import javafx.application.Application;
+import javafx.stage.Stage;
+
+import com.linux.java.se.nine.jpms.GenerateContents;
+
+public class SimpleUiApp extends Application{
+
+	public static void main(String[] args) {
+		launch(args);
+	}
+
+	public void start(Stage primaryStage) {
+		GenerateContents.defaultContent(primaryStage);
+		primaryStage.show();
+	}
+}
+
+
+
+// javac com/module-info.java  com/linux/java/se/nine/jpms/SimpleUiApp.java com/linux/java/se/nine/jpms/internal/GenerateContents.java
+// java --module-path com.linux.java.se.nine.jpms com.linux.java.se.nine.jpms.SimpleUiApp
\ No newline at end of file
diff --git a/jpms/com/linux/java/se/nine/jpms/internal/GenerateContents.java b/jpms/com/linux/java/se/nine/jpms/internal/GenerateContents.java
new file mode 100644
index 0000000..ccc30b0
--- /dev/null
+++ b/jpms/com/linux/java/se/nine/jpms/internal/GenerateContents.java
@@ -0,0 +1,21 @@
+package com.linux.java.se.nine.jpms.internal;
+
+import javafx.scene.Scene;
+import javafx.scene.layout.StackPane;
+import javafx.stage.Stage;
+
+/**
+ * DefaultStage
+ */
+public class GenerateContents {
+	public static void defaultContent(Stage stage) {
+		stage.setTitle("Hello Java9 World");
+		Button button = new Button();
+		button.setText("Hello Java9 World");
+		button.setOnAction(e -> System.out.println("Performed " + e.getEventType().toString()));
+
+		StackPane root = new StackPane();
+		root.getChildren().add(button);
+		stage.setScene(new Scene(root, 400, 300));
+	}
+}
\ No newline at end of file
diff --git a/jpms/src/com/module-info.java b/jpms/com/module-info.java
similarity index 100%
rename from jpms/src/com/module-info.java
rename to jpms/com/module-info.java
diff --git a/jpms/src/com/linux/java/se/nine/jpms/SimpleUiApp.java b/jpms/src/com/linux/java/se/nine/jpms/SimpleUiApp.java
deleted file mode 100644
index 6ee2b48..0000000
--- a/jpms/src/com/linux/java/se/nine/jpms/SimpleUiApp.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.linux.java.se.nine.jpms;
-
-import javafx.application.Application;
-import javafx.scene.Scene;
-import javafx.scene.control.Button;
-import javafx.scene.layout.StackPane;
-import javafx.stage.Stage;
-
-public class SimpleUiApp extends Application{
-
-	public static void main(String[] args) {
-		launch(args);
-	}
-
-	public void start(Stage primaryStage) {
-		primaryStage.setTitle("Hello Java9 World");
-		Button button = new Button();
-		button.setText("Hello Java9 World");
-		button.setOnAction(e -> System.out.println("Performed " + e.getEventType().toString()));
-
-		StackPane root = new StackPane();
-		root.getChildren().add(button);
-		primaryStage.setScene(new Scene(root, 400, 300));
-		primaryStage.show();
-	}
-}
-
-
-
-// javac com/module-info.java  com/linux/java/se/nine/jpms/SimpleUiApp.java
-// java --module-path com.linux.java.se.nine.jpms com.linux.java.se.nine.jpms.SimpleUiApp
\ No newline at end of file

From 3fb22f8aa19078cfe5ac8b1f7a2b44620328cee8 Mon Sep 17 00:00:00 2001
From: Guruprasad Kulkarni <guruprasad.kulkarni@idnow.de>
Date: Mon, 8 Jan 2018 12:19:12 +0100
Subject: [PATCH 03/14] Added an internal package

---
 jpms/com/linux/java/se/nine/jpms/SimpleUiApp.java             | 4 ++--
 .../linux/java/se/nine/jpms/internal/GenerateContents.java    | 1 +
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/jpms/com/linux/java/se/nine/jpms/SimpleUiApp.java b/jpms/com/linux/java/se/nine/jpms/SimpleUiApp.java
index 7551645..054edf9 100644
--- a/jpms/com/linux/java/se/nine/jpms/SimpleUiApp.java
+++ b/jpms/com/linux/java/se/nine/jpms/SimpleUiApp.java
@@ -3,7 +3,7 @@
 import javafx.application.Application;
 import javafx.stage.Stage;
 
-import com.linux.java.se.nine.jpms.GenerateContents;
+import com.linux.java.se.nine.jpms.internal.GenerateContents;
 
 public class SimpleUiApp extends Application{
 
@@ -19,5 +19,5 @@ public void start(Stage primaryStage) {
 
 
 
-// javac com/module-info.java  com/linux/java/se/nine/jpms/SimpleUiApp.java com/linux/java/se/nine/jpms/internal/GenerateContents.java
+// javac com/module-info.java com/linux/java/se/nine/jpms/internal/GenerateContents.java com/linux/java/se/nine/jpms/SimpleUiApp.java
 // java --module-path com.linux.java.se.nine.jpms com.linux.java.se.nine.jpms.SimpleUiApp
\ No newline at end of file
diff --git a/jpms/com/linux/java/se/nine/jpms/internal/GenerateContents.java b/jpms/com/linux/java/se/nine/jpms/internal/GenerateContents.java
index ccc30b0..125eddf 100644
--- a/jpms/com/linux/java/se/nine/jpms/internal/GenerateContents.java
+++ b/jpms/com/linux/java/se/nine/jpms/internal/GenerateContents.java
@@ -3,6 +3,7 @@
 import javafx.scene.Scene;
 import javafx.scene.layout.StackPane;
 import javafx.stage.Stage;
+import javafx.scene.control.Button;
 
 /**
  * DefaultStage

From 88d00523461343f69970b76e7f31f6c1671364c8 Mon Sep 17 00:00:00 2001
From: Guruprasad Kulkarni <guruprasad.kulkarni@idnow.de>
Date: Mon, 8 Jan 2018 12:30:05 +0100
Subject: [PATCH 04/14] updates

---
 README.md                                     |  5 +++-
 .../linux/java/se/nine/jpms/SimpleUiApp.java  | 23 -------------------
 .../NowSimpleButWillBeComplexApp.java         |  9 ++++++++
 .../se/nine/jpms/anotherapp/module-info.java  |  2 ++
 .../java/se/nine/jpms/app/SimpleUiApp.java    | 23 +++++++++++++++++++
 .../{ => app}/internal/GenerateContents.java  |  2 +-
 .../java/se/nine/jpms/app}/module-info.java   |  2 +-
 7 files changed, 40 insertions(+), 26 deletions(-)
 delete mode 100644 jpms/com/linux/java/se/nine/jpms/SimpleUiApp.java
 create mode 100644 jpms/com/linux/java/se/nine/jpms/anotherapp/NowSimpleButWillBeComplexApp.java
 create mode 100644 jpms/com/linux/java/se/nine/jpms/anotherapp/module-info.java
 create mode 100644 jpms/com/linux/java/se/nine/jpms/app/SimpleUiApp.java
 rename jpms/com/linux/java/se/nine/jpms/{ => app}/internal/GenerateContents.java (91%)
 rename jpms/com/{ => linux/java/se/nine/jpms/app}/module-info.java (59%)

diff --git a/README.md b/README.md
index 63bd836..bcd85c3 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,7 @@
 # Java-9-Discovery
 Java 9 Meetup
 
-For more details see https://github.com/gurukulkarni/Java-9-Discovery/wiki
\ No newline at end of file
+For more details see https://github.com/gurukulkarni/Java-9-Discovery/wiki
+
+
+find Java-9-Discovery -type f -name "*.class" -exec rm -v {} +   // linux? or gnu command to remove all .class files from the project
\ No newline at end of file
diff --git a/jpms/com/linux/java/se/nine/jpms/SimpleUiApp.java b/jpms/com/linux/java/se/nine/jpms/SimpleUiApp.java
deleted file mode 100644
index 054edf9..0000000
--- a/jpms/com/linux/java/se/nine/jpms/SimpleUiApp.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.linux.java.se.nine.jpms;
-
-import javafx.application.Application;
-import javafx.stage.Stage;
-
-import com.linux.java.se.nine.jpms.internal.GenerateContents;
-
-public class SimpleUiApp extends Application{
-
-	public static void main(String[] args) {
-		launch(args);
-	}
-
-	public void start(Stage primaryStage) {
-		GenerateContents.defaultContent(primaryStage);
-		primaryStage.show();
-	}
-}
-
-
-
-// javac com/module-info.java com/linux/java/se/nine/jpms/internal/GenerateContents.java com/linux/java/se/nine/jpms/SimpleUiApp.java
-// java --module-path com.linux.java.se.nine.jpms com.linux.java.se.nine.jpms.SimpleUiApp
\ No newline at end of file
diff --git a/jpms/com/linux/java/se/nine/jpms/anotherapp/NowSimpleButWillBeComplexApp.java b/jpms/com/linux/java/se/nine/jpms/anotherapp/NowSimpleButWillBeComplexApp.java
new file mode 100644
index 0000000..b6c4475
--- /dev/null
+++ b/jpms/com/linux/java/se/nine/jpms/anotherapp/NowSimpleButWillBeComplexApp.java
@@ -0,0 +1,9 @@
+package com.linux.java.se.nine.jpms.anotherapp;
+
+/**
+ * NowSimpleButWillBeComplexApp
+ */
+public class NowSimpleButWillBeComplexApp {
+
+	
+}
\ No newline at end of file
diff --git a/jpms/com/linux/java/se/nine/jpms/anotherapp/module-info.java b/jpms/com/linux/java/se/nine/jpms/anotherapp/module-info.java
new file mode 100644
index 0000000..8ace5c6
--- /dev/null
+++ b/jpms/com/linux/java/se/nine/jpms/anotherapp/module-info.java
@@ -0,0 +1,2 @@
+module jpms.anotheruiapp {
+}
\ No newline at end of file
diff --git a/jpms/com/linux/java/se/nine/jpms/app/SimpleUiApp.java b/jpms/com/linux/java/se/nine/jpms/app/SimpleUiApp.java
new file mode 100644
index 0000000..4c08cb1
--- /dev/null
+++ b/jpms/com/linux/java/se/nine/jpms/app/SimpleUiApp.java
@@ -0,0 +1,23 @@
+package com.linux.java.se.nine.jpms.app;
+
+import javafx.application.Application;
+import javafx.stage.Stage;
+
+import com.linux.java.se.nine.jpms.app.internal.GenerateContents;
+
+public class SimpleUiApp extends Application{
+
+	public static void main(String[] args) {
+		launch(args);
+	}
+
+	public void start(Stage primaryStage) {
+		GenerateContents.defaultContent(primaryStage);
+		primaryStage.show();
+	}
+}
+
+
+
+// javac com/linux/java/se/nine/jpms/example/module-info.java com/linux/java/se/nine/jpms/example/internal/GenerateContents.java com/linux/java/se/nine/jpms/example/SimpleUiApp.java
+// java --module-path jpms.example com.linux.java.se.nine.jpms.example.SimpleUiApp
\ No newline at end of file
diff --git a/jpms/com/linux/java/se/nine/jpms/internal/GenerateContents.java b/jpms/com/linux/java/se/nine/jpms/app/internal/GenerateContents.java
similarity index 91%
rename from jpms/com/linux/java/se/nine/jpms/internal/GenerateContents.java
rename to jpms/com/linux/java/se/nine/jpms/app/internal/GenerateContents.java
index 125eddf..0ecbd65 100644
--- a/jpms/com/linux/java/se/nine/jpms/internal/GenerateContents.java
+++ b/jpms/com/linux/java/se/nine/jpms/app/internal/GenerateContents.java
@@ -1,4 +1,4 @@
-package com.linux.java.se.nine.jpms.internal;
+package com.linux.java.se.nine.jpms.app.internal;
 
 import javafx.scene.Scene;
 import javafx.scene.layout.StackPane;
diff --git a/jpms/com/module-info.java b/jpms/com/linux/java/se/nine/jpms/app/module-info.java
similarity index 59%
rename from jpms/com/module-info.java
rename to jpms/com/linux/java/se/nine/jpms/app/module-info.java
index 3f12250..ef71a7b 100644
--- a/jpms/com/module-info.java
+++ b/jpms/com/linux/java/se/nine/jpms/app/module-info.java
@@ -1,4 +1,4 @@
-module com.linux.java.se.nine.jpms {
+module jpms.app {
 	requires javafx.graphics;
 	requires javafx.controls;
 }
\ No newline at end of file

From bafd1da03ddd4c3a4c87447ef3162e5c1278610b Mon Sep 17 00:00:00 2001
From: Guruprasad Kulkarni <guruprasad.kulkarni@idnow.de>
Date: Mon, 8 Jan 2018 12:30:53 +0100
Subject: [PATCH 05/14] fixed commands

---
 jpms/com/linux/java/se/nine/jpms/app/SimpleUiApp.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/jpms/com/linux/java/se/nine/jpms/app/SimpleUiApp.java b/jpms/com/linux/java/se/nine/jpms/app/SimpleUiApp.java
index 4c08cb1..3e09e4a 100644
--- a/jpms/com/linux/java/se/nine/jpms/app/SimpleUiApp.java
+++ b/jpms/com/linux/java/se/nine/jpms/app/SimpleUiApp.java
@@ -19,5 +19,5 @@ public void start(Stage primaryStage) {
 
 
 
-// javac com/linux/java/se/nine/jpms/example/module-info.java com/linux/java/se/nine/jpms/example/internal/GenerateContents.java com/linux/java/se/nine/jpms/example/SimpleUiApp.java
-// java --module-path jpms.example com.linux.java.se.nine.jpms.example.SimpleUiApp
\ No newline at end of file
+// javac com/linux/java/se/nine/jpms/app/module-info.java com/linux/java/se/nine/jpms/app/internal/GenerateContents.java com/linux/java/se/nine/jpms/app/SimpleUiApp.java
+// java --module-path jpms.app com.linux.java.se.nine.jpms.app.SimpleUiApp
\ No newline at end of file

From 94865b24f5ac209957a55dd5db8c187e31f7c4e3 Mon Sep 17 00:00:00 2001
From: Guruprasad Kulkarni <guruprasad.kulkarni@idnow.de>
Date: Mon, 8 Jan 2018 15:06:24 +0100
Subject: [PATCH 06/14] Fixed folders

---
 .../com/linux/complex/ComplexApp.java         | 25 +++++++++++++++++++
 .../jpms/app => anotherapp}/module-info.java  |  3 ++-
 .../com/linux/simple}/SimpleUiApp.java        |  9 ++++---
 .../simple}/internal/GenerateContents.java    |  2 +-
 jpms/app/module-info.java                     |  5 ++++
 .../NowSimpleButWillBeComplexApp.java         |  9 -------
 .../se/nine/jpms/anotherapp/module-info.java  |  2 --
 7 files changed, 38 insertions(+), 17 deletions(-)
 create mode 100644 jpms/anotherapp/com/linux/complex/ComplexApp.java
 rename jpms/{com/linux/java/se/nine/jpms/app => anotherapp}/module-info.java (50%)
 rename jpms/{com/linux/java/se/nine/jpms/app => app/com/linux/simple}/SimpleUiApp.java (57%)
 rename jpms/{com/linux/java/se/nine/jpms/app => app/com/linux/simple}/internal/GenerateContents.java (91%)
 create mode 100644 jpms/app/module-info.java
 delete mode 100644 jpms/com/linux/java/se/nine/jpms/anotherapp/NowSimpleButWillBeComplexApp.java
 delete mode 100644 jpms/com/linux/java/se/nine/jpms/anotherapp/module-info.java

diff --git a/jpms/anotherapp/com/linux/complex/ComplexApp.java b/jpms/anotherapp/com/linux/complex/ComplexApp.java
new file mode 100644
index 0000000..a51562d
--- /dev/null
+++ b/jpms/anotherapp/com/linux/complex/ComplexApp.java
@@ -0,0 +1,25 @@
+package com.linux.complex;
+
+import javafx.application.Application;
+import javafx.stage.Stage;
+
+import app.GenerateContents;
+
+/**
+ * ComplexApp
+ */
+public class ComplexApp extends Application{
+	public static void main(String[] args) {
+		launch(args);
+	}
+
+	public void start(Stage primaryStage) {
+		GenerateContents.defaultContent(primaryStage);
+		primaryStage.show();
+	}
+	
+}
+
+
+// javac com/linux/java/se/nine/jpms/anotherapp/module-info.java com/linux/java/se/nine/jpms/anotherapp/ComplexApp.java
+// java --module-path jpms.app com.linux.java.se.nine.jpms.app.SimpleUiApp
\ No newline at end of file
diff --git a/jpms/com/linux/java/se/nine/jpms/app/module-info.java b/jpms/anotherapp/module-info.java
similarity index 50%
rename from jpms/com/linux/java/se/nine/jpms/app/module-info.java
rename to jpms/anotherapp/module-info.java
index ef71a7b..8eb330f 100644
--- a/jpms/com/linux/java/se/nine/jpms/app/module-info.java
+++ b/jpms/anotherapp/module-info.java
@@ -1,4 +1,5 @@
-module jpms.app {
+module jpms.anotherapp {
 	requires javafx.graphics;
 	requires javafx.controls;
+	requires com.linux.simple;
 }
\ No newline at end of file
diff --git a/jpms/com/linux/java/se/nine/jpms/app/SimpleUiApp.java b/jpms/app/com/linux/simple/SimpleUiApp.java
similarity index 57%
rename from jpms/com/linux/java/se/nine/jpms/app/SimpleUiApp.java
rename to jpms/app/com/linux/simple/SimpleUiApp.java
index 3e09e4a..193bf0f 100644
--- a/jpms/com/linux/java/se/nine/jpms/app/SimpleUiApp.java
+++ b/jpms/app/com/linux/simple/SimpleUiApp.java
@@ -1,9 +1,9 @@
-package com.linux.java.se.nine.jpms.app;
+package com.linux.simple;
 
 import javafx.application.Application;
 import javafx.stage.Stage;
 
-import com.linux.java.se.nine.jpms.app.internal.GenerateContents;
+import com.linux.simple.internal.GenerateContents;
 
 public class SimpleUiApp extends Application{
 
@@ -18,6 +18,7 @@ public void start(Stage primaryStage) {
 }
 
 
-
-// javac com/linux/java/se/nine/jpms/app/module-info.java com/linux/java/se/nine/jpms/app/internal/GenerateContents.java com/linux/java/se/nine/jpms/app/SimpleUiApp.java
+// cd jpms
+// javac `find app -type f -name "*.java"`
+// jar -cvf jpms.app.jar -e com.linux.java.se.nine.jpms.app.SimpleUiApp  -C com/linux/java/se/nine/jpms/app .
 // java --module-path jpms.app com.linux.java.se.nine.jpms.app.SimpleUiApp
\ No newline at end of file
diff --git a/jpms/com/linux/java/se/nine/jpms/app/internal/GenerateContents.java b/jpms/app/com/linux/simple/internal/GenerateContents.java
similarity index 91%
rename from jpms/com/linux/java/se/nine/jpms/app/internal/GenerateContents.java
rename to jpms/app/com/linux/simple/internal/GenerateContents.java
index 0ecbd65..88a0361 100644
--- a/jpms/com/linux/java/se/nine/jpms/app/internal/GenerateContents.java
+++ b/jpms/app/com/linux/simple/internal/GenerateContents.java
@@ -1,4 +1,4 @@
-package com.linux.java.se.nine.jpms.app.internal;
+package com.linux.simple.internal;
 
 import javafx.scene.Scene;
 import javafx.scene.layout.StackPane;
diff --git a/jpms/app/module-info.java b/jpms/app/module-info.java
new file mode 100644
index 0000000..ce12491
--- /dev/null
+++ b/jpms/app/module-info.java
@@ -0,0 +1,5 @@
+module com.linux.simple {
+	requires javafx.graphics;
+	requires javafx.controls;
+	exports com.linux.simple;
+}
\ No newline at end of file
diff --git a/jpms/com/linux/java/se/nine/jpms/anotherapp/NowSimpleButWillBeComplexApp.java b/jpms/com/linux/java/se/nine/jpms/anotherapp/NowSimpleButWillBeComplexApp.java
deleted file mode 100644
index b6c4475..0000000
--- a/jpms/com/linux/java/se/nine/jpms/anotherapp/NowSimpleButWillBeComplexApp.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.linux.java.se.nine.jpms.anotherapp;
-
-/**
- * NowSimpleButWillBeComplexApp
- */
-public class NowSimpleButWillBeComplexApp {
-
-	
-}
\ No newline at end of file
diff --git a/jpms/com/linux/java/se/nine/jpms/anotherapp/module-info.java b/jpms/com/linux/java/se/nine/jpms/anotherapp/module-info.java
deleted file mode 100644
index 8ace5c6..0000000
--- a/jpms/com/linux/java/se/nine/jpms/anotherapp/module-info.java
+++ /dev/null
@@ -1,2 +0,0 @@
-module jpms.anotheruiapp {
-}
\ No newline at end of file

From 56774e1fd6a4dbcd73d6adc0625618eb26f60eef Mon Sep 17 00:00:00 2001
From: Guruprasad Kulkarni <guruprasad.kulkarni@idnow.de>
Date: Mon, 8 Jan 2018 17:07:59 +0100
Subject: [PATCH 07/14] Further updates

---
 jpms/app/com/linux/simple/SimpleUiApp.java    | 24 -----------------
 .../simple/internal/GenerateContents.java     | 22 ---------------
 jpms/com.linux.complex/ComplexApp.java        | 21 +++++++++++++++
 .../com/linux/complex/ComplexApp.java         |  7 ++---
 .../module-info.java                          |  2 +-
 .../com/linux/simple/SimpleUiApp.java         | 24 +++++++++++++++++
 .../simple/generators/ContentsGenerator.java  | 13 +++++++++
 .../internal/DefaultContentsGenerator.java    | 27 +++++++++++++++++++
 .../module-info.java                          |  1 +
 jpms/com/module-info.java                     |  6 +++++
 10 files changed, 97 insertions(+), 50 deletions(-)
 delete mode 100644 jpms/app/com/linux/simple/SimpleUiApp.java
 delete mode 100644 jpms/app/com/linux/simple/internal/GenerateContents.java
 create mode 100644 jpms/com.linux.complex/ComplexApp.java
 rename jpms/{anotherapp => com.linux.complex}/com/linux/complex/ComplexApp.java (52%)
 rename jpms/{anotherapp => com.linux.complex}/module-info.java (75%)
 create mode 100644 jpms/com.linux.simple/com/linux/simple/SimpleUiApp.java
 create mode 100644 jpms/com.linux.simple/com/linux/simple/generators/ContentsGenerator.java
 create mode 100644 jpms/com.linux.simple/com/linux/simple/generators/internal/DefaultContentsGenerator.java
 rename jpms/{app => com.linux.simple}/module-info.java (73%)
 create mode 100644 jpms/com/module-info.java

diff --git a/jpms/app/com/linux/simple/SimpleUiApp.java b/jpms/app/com/linux/simple/SimpleUiApp.java
deleted file mode 100644
index 193bf0f..0000000
--- a/jpms/app/com/linux/simple/SimpleUiApp.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.linux.simple;
-
-import javafx.application.Application;
-import javafx.stage.Stage;
-
-import com.linux.simple.internal.GenerateContents;
-
-public class SimpleUiApp extends Application{
-
-	public static void main(String[] args) {
-		launch(args);
-	}
-
-	public void start(Stage primaryStage) {
-		GenerateContents.defaultContent(primaryStage);
-		primaryStage.show();
-	}
-}
-
-
-// cd jpms
-// javac `find app -type f -name "*.java"`
-// jar -cvf jpms.app.jar -e com.linux.java.se.nine.jpms.app.SimpleUiApp  -C com/linux/java/se/nine/jpms/app .
-// java --module-path jpms.app com.linux.java.se.nine.jpms.app.SimpleUiApp
\ No newline at end of file
diff --git a/jpms/app/com/linux/simple/internal/GenerateContents.java b/jpms/app/com/linux/simple/internal/GenerateContents.java
deleted file mode 100644
index 88a0361..0000000
--- a/jpms/app/com/linux/simple/internal/GenerateContents.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.linux.simple.internal;
-
-import javafx.scene.Scene;
-import javafx.scene.layout.StackPane;
-import javafx.stage.Stage;
-import javafx.scene.control.Button;
-
-/**
- * DefaultStage
- */
-public class GenerateContents {
-	public static void defaultContent(Stage stage) {
-		stage.setTitle("Hello Java9 World");
-		Button button = new Button();
-		button.setText("Hello Java9 World");
-		button.setOnAction(e -> System.out.println("Performed " + e.getEventType().toString()));
-
-		StackPane root = new StackPane();
-		root.getChildren().add(button);
-		stage.setScene(new Scene(root, 400, 300));
-	}
-}
\ No newline at end of file
diff --git a/jpms/com.linux.complex/ComplexApp.java b/jpms/com.linux.complex/ComplexApp.java
new file mode 100644
index 0000000..b7ee7ea
--- /dev/null
+++ b/jpms/com.linux.complex/ComplexApp.java
@@ -0,0 +1,21 @@
+package com.linux.complex;
+
+import javafx.application.Application;
+import javafx.stage.Stage;
+
+import com.linux.simple.generators.ContentsGenerator;
+
+/**
+ * ComplexApp
+ */
+public class ComplexApp extends Application{
+	public static void main(String[] args) {
+		launch(args);
+	}
+
+	public void start(Stage primaryStage) {
+		ContentsGenerator contentsGenerator = ContentsGenerator.getInstance();
+		contentsGeneratorr.generateContent(primaryStage);Complicated 
+		primaryS" 
+	ComplexAppjavac com/linux/java/se/nine/jpms/anotherapp/module-info.java com/linux/java/se/nine/jpms/anotherapp/ComplexApp.java
+// java --module-path jpms.app com.linux.java.se.nine.jpms.app.SimpleUiApp
\ No newline at end of file
diff --git a/jpms/anotherapp/com/linux/complex/ComplexApp.java b/jpms/com.linux.complex/com/linux/complex/ComplexApp.java
similarity index 52%
rename from jpms/anotherapp/com/linux/complex/ComplexApp.java
rename to jpms/com.linux.complex/com/linux/complex/ComplexApp.java
index a51562d..604e306 100644
--- a/jpms/anotherapp/com/linux/complex/ComplexApp.java
+++ b/jpms/com.linux.complex/com/linux/complex/ComplexApp.java
@@ -3,7 +3,7 @@
 import javafx.application.Application;
 import javafx.stage.Stage;
 
-import app.GenerateContents;
+import com.linux.simple.generators.ContentsGenerator;
 
 /**
  * ComplexApp
@@ -14,12 +14,13 @@ public static void main(String[] args) {
 	}
 
 	public void start(Stage primaryStage) {
-		GenerateContents.defaultContent(primaryStage);
+		ContentsGenerator contentsGenerator = ContentsGenerator.getInstance();
+		contentsGenerator.generateContent(primaryStage, "Complicated Hello Java9" , ComplexApp.class.getSimpleName());
 		primaryStage.show();
 	}
 	
 }
 
 
-// javac com/linux/java/se/nine/jpms/anotherapp/module-info.java com/linux/java/se/nine/jpms/anotherapp/ComplexApp.java
+// javac --module-path app anotherapp/module-info.java anotherapp/com/linux/complex/ComplexApp.java
 // java --module-path jpms.app com.linux.java.se.nine.jpms.app.SimpleUiApp
\ No newline at end of file
diff --git a/jpms/anotherapp/module-info.java b/jpms/com.linux.complex/module-info.java
similarity index 75%
rename from jpms/anotherapp/module-info.java
rename to jpms/com.linux.complex/module-info.java
index 8eb330f..98a345e 100644
--- a/jpms/anotherapp/module-info.java
+++ b/jpms/com.linux.complex/module-info.java
@@ -1,4 +1,4 @@
-module jpms.anotherapp {
+module com.linux.complex {
 	requires javafx.graphics;
 	requires javafx.controls;
 	requires com.linux.simple;
diff --git a/jpms/com.linux.simple/com/linux/simple/SimpleUiApp.java b/jpms/com.linux.simple/com/linux/simple/SimpleUiApp.java
new file mode 100644
index 0000000..b55cd13
--- /dev/null
+++ b/jpms/com.linux.simple/com/linux/simple/SimpleUiApp.java
@@ -0,0 +1,24 @@
+package com.linux.simple;
+
+import javafx.application.Application;
+import javafx.stage.Stage;
+
+import com.linux.simple.generators.ContentsGenerator;
+
+public class SimpleUiApp extends Application{
+
+	public static void main(String[] args) {
+		launch(args);
+	}
+
+	public void start(Stage primaryStage) {
+		ContentsGenerator contentGenerator = ContentsGenerator.getInstance();
+		contentGenerator.generateContent(primaryStage, "Hello Java9", SimpleUiApp.class.getSimpleName());
+		primaryStage.show();
+	}
+}
+
+
+// cd jpms
+// javac app/module-info.java app/com/linux/simple/SimpleUiApp.java app/com/linux/simple/generators/ContentsGenerator.java app/com/linux/simple/generators/internal/DefaultContentsGenerator.java
+// cd app && java com.linux.simple.SimpleUiApp; cd ..
\ No newline at end of file
diff --git a/jpms/com.linux.simple/com/linux/simple/generators/ContentsGenerator.java b/jpms/com.linux.simple/com/linux/simple/generators/ContentsGenerator.java
new file mode 100644
index 0000000..42b337a
--- /dev/null
+++ b/jpms/com.linux.simple/com/linux/simple/generators/ContentsGenerator.java
@@ -0,0 +1,13 @@
+package com.linux.simple.generators;
+
+import javafx.stage.Stage;
+
+import com.linux.simple.generators.internal.DefaultContentsGenerator;
+
+public interface ContentsGenerator {
+	void generateContent(Stage stage, String title, String messagePrefix);
+
+	static ContentsGenerator getInstance() {
+		return new DefaultContentsGenerator();
+	}
+}
\ No newline at end of file
diff --git a/jpms/com.linux.simple/com/linux/simple/generators/internal/DefaultContentsGenerator.java b/jpms/com.linux.simple/com/linux/simple/generators/internal/DefaultContentsGenerator.java
new file mode 100644
index 0000000..586afe4
--- /dev/null
+++ b/jpms/com.linux.simple/com/linux/simple/generators/internal/DefaultContentsGenerator.java
@@ -0,0 +1,27 @@
+package com.linux.simple.generators.internal;
+
+import javafx.scene.Scene;
+import javafx.scene.layout.StackPane;
+import javafx.stage.Stage;
+import javafx.scene.control.Button;
+
+import com.linux.simple.generators.ContentsGenerator;
+
+/**
+ * DefaultContentsGenerator
+ */
+public class DefaultContentsGenerator implements ContentsGenerator{
+
+	@Override
+	public void generateContent(Stage stage, String title, String messagePrefix) {
+		System.out.println("Default content generated.");
+		stage.setTitle(title);
+		Button button = new Button();
+		button.setText(title);
+		button.setOnAction(e -> System.out.println(messagePrefix + " -- " + e.getEventType().toString()));
+
+		StackPane root = new StackPane();
+		root.getChildren().add(button);
+		stage.setScene(new Scene(root, 400, 300));
+	}
+}
\ No newline at end of file
diff --git a/jpms/app/module-info.java b/jpms/com.linux.simple/module-info.java
similarity index 73%
rename from jpms/app/module-info.java
rename to jpms/com.linux.simple/module-info.java
index ce12491..0260543 100644
--- a/jpms/app/module-info.java
+++ b/jpms/com.linux.simple/module-info.java
@@ -1,5 +1,6 @@
 module com.linux.simple {
 	requires javafx.graphics;
 	requires javafx.controls;
+	exports com.linux.simple.generators;
 	exports com.linux.simple;
 }
\ No newline at end of file
diff --git a/jpms/com/module-info.java b/jpms/com/module-info.java
new file mode 100644
index 0000000..0260543
--- /dev/null
+++ b/jpms/com/module-info.java
@@ -0,0 +1,6 @@
+module com.linux.simple {
+	requires javafx.graphics;
+	requires javafx.controls;
+	exports com.linux.simple.generators;
+	exports com.linux.simple;
+}
\ No newline at end of file

From 62602282d09bbc4aaded2e837f0bc8e3256268d2 Mon Sep 17 00:00:00 2001
From: Guruprasad Kulkarni <guruprasad.kulkarni@idnow.de>
Date: Mon, 8 Jan 2018 17:52:26 +0100
Subject: [PATCH 08/14] Moved Packages

---
 .../com/linux/complex => anotherapp}/ComplexApp.java  | 10 ++++------
 jpms/com.linux.simple/module-info.java                |  6 ------
 .../com/linux/complex}/ComplexApp.java                | 11 +++++++----
 jpms/{com.linux.complex => complex}/module-info.java  |  4 ++--
 .../com/linux/simple/SimpleUiApp.java                 |  2 +-
 .../linux/simple/generators/ContentsGenerator.java    |  0
 .../generators/internal/DefaultContentsGenerator.java |  0
 jpms/{com => simple}/module-info.java                 |  3 +--
 8 files changed, 15 insertions(+), 21 deletions(-)
 rename jpms/{com.linux.complex/com/linux/complex => anotherapp}/ComplexApp.java (59%)
 delete mode 100644 jpms/com.linux.simple/module-info.java
 rename jpms/{com.linux.complex => complex/com/linux/complex}/ComplexApp.java (58%)
 rename jpms/{com.linux.complex => complex}/module-info.java (50%)
 rename jpms/{com.linux.simple => simple}/com/linux/simple/SimpleUiApp.java (90%)
 rename jpms/{com.linux.simple => simple}/com/linux/simple/generators/ContentsGenerator.java (100%)
 rename jpms/{com.linux.simple => simple}/com/linux/simple/generators/internal/DefaultContentsGenerator.java (100%)
 rename jpms/{com => simple}/module-info.java (56%)

diff --git a/jpms/com.linux.complex/com/linux/complex/ComplexApp.java b/jpms/anotherapp/ComplexApp.java
similarity index 59%
rename from jpms/com.linux.complex/com/linux/complex/ComplexApp.java
rename to jpms/anotherapp/ComplexApp.java
index 604e306..8064e21 100644
--- a/jpms/com.linux.complex/com/linux/complex/ComplexApp.java
+++ b/jpms/anotherapp/ComplexApp.java
@@ -15,12 +15,10 @@ public static void main(String[] args) {
 
 	public void start(Stage primaryStage) {
 		ContentsGenerator contentsGenerator = ContentsGenerator.getInstance();
-		contentsGenerator.generateContent(primaryStage, "Complicated Hello Java9" , ComplexApp.class.getSimpleName());
+		contentsGenerator.generateContent(primaryStage, "Complex JavaFX Application", ComplexApp.class.getSimpleName());
 		primaryStage.show();
 	}
-	
-}
-
 
-// javac --module-path app anotherapp/module-info.java anotherapp/com/linux/complex/ComplexApp.java
-// java --module-path jpms.app com.linux.java.se.nine.jpms.app.SimpleUiApp
\ No newline at end of file
+}
+		
+// javac --module-path simple complex/module-info.java complex/com/linux/complex/ComplexApp.java
\ No newline at end of file
diff --git a/jpms/com.linux.simple/module-info.java b/jpms/com.linux.simple/module-info.java
deleted file mode 100644
index 0260543..0000000
--- a/jpms/com.linux.simple/module-info.java
+++ /dev/null
@@ -1,6 +0,0 @@
-module com.linux.simple {
-	requires javafx.graphics;
-	requires javafx.controls;
-	exports com.linux.simple.generators;
-	exports com.linux.simple;
-}
\ No newline at end of file
diff --git a/jpms/com.linux.complex/ComplexApp.java b/jpms/complex/com/linux/complex/ComplexApp.java
similarity index 58%
rename from jpms/com.linux.complex/ComplexApp.java
rename to jpms/complex/com/linux/complex/ComplexApp.java
index b7ee7ea..8064e21 100644
--- a/jpms/com.linux.complex/ComplexApp.java
+++ b/jpms/complex/com/linux/complex/ComplexApp.java
@@ -15,7 +15,10 @@ public static void main(String[] args) {
 
 	public void start(Stage primaryStage) {
 		ContentsGenerator contentsGenerator = ContentsGenerator.getInstance();
-		contentsGeneratorr.generateContent(primaryStage);Complicated 
-		primaryS" 
-	ComplexAppjavac com/linux/java/se/nine/jpms/anotherapp/module-info.java com/linux/java/se/nine/jpms/anotherapp/ComplexApp.java
-// java --module-path jpms.app com.linux.java.se.nine.jpms.app.SimpleUiApp
\ No newline at end of file
+		contentsGenerator.generateContent(primaryStage, "Complex JavaFX Application", ComplexApp.class.getSimpleName());
+		primaryStage.show();
+	}
+
+}
+		
+// javac --module-path simple complex/module-info.java complex/com/linux/complex/ComplexApp.java
\ No newline at end of file
diff --git a/jpms/com.linux.complex/module-info.java b/jpms/complex/module-info.java
similarity index 50%
rename from jpms/com.linux.complex/module-info.java
rename to jpms/complex/module-info.java
index 98a345e..7dd77af 100644
--- a/jpms/com.linux.complex/module-info.java
+++ b/jpms/complex/module-info.java
@@ -1,5 +1,5 @@
-module com.linux.complex {
+module complex {
 	requires javafx.graphics;
 	requires javafx.controls;
-	requires com.linux.simple;
+	requires simple;
 }
\ No newline at end of file
diff --git a/jpms/com.linux.simple/com/linux/simple/SimpleUiApp.java b/jpms/simple/com/linux/simple/SimpleUiApp.java
similarity index 90%
rename from jpms/com.linux.simple/com/linux/simple/SimpleUiApp.java
rename to jpms/simple/com/linux/simple/SimpleUiApp.java
index b55cd13..a05b057 100644
--- a/jpms/com.linux.simple/com/linux/simple/SimpleUiApp.java
+++ b/jpms/simple/com/linux/simple/SimpleUiApp.java
@@ -21,4 +21,4 @@ public void start(Stage primaryStage) {
 
 // cd jpms
 // javac app/module-info.java app/com/linux/simple/SimpleUiApp.java app/com/linux/simple/generators/ContentsGenerator.java app/com/linux/simple/generators/internal/DefaultContentsGenerator.java
-// cd app && java com.linux.simple.SimpleUiApp; cd ..
\ No newline at end of file
+// java --module-path simple --module simple/com.linux.simple.SimpleUiApp
\ No newline at end of file
diff --git a/jpms/com.linux.simple/com/linux/simple/generators/ContentsGenerator.java b/jpms/simple/com/linux/simple/generators/ContentsGenerator.java
similarity index 100%
rename from jpms/com.linux.simple/com/linux/simple/generators/ContentsGenerator.java
rename to jpms/simple/com/linux/simple/generators/ContentsGenerator.java
diff --git a/jpms/com.linux.simple/com/linux/simple/generators/internal/DefaultContentsGenerator.java b/jpms/simple/com/linux/simple/generators/internal/DefaultContentsGenerator.java
similarity index 100%
rename from jpms/com.linux.simple/com/linux/simple/generators/internal/DefaultContentsGenerator.java
rename to jpms/simple/com/linux/simple/generators/internal/DefaultContentsGenerator.java
diff --git a/jpms/com/module-info.java b/jpms/simple/module-info.java
similarity index 56%
rename from jpms/com/module-info.java
rename to jpms/simple/module-info.java
index 0260543..7967644 100644
--- a/jpms/com/module-info.java
+++ b/jpms/simple/module-info.java
@@ -1,6 +1,5 @@
-module com.linux.simple {
+module simple {
 	requires javafx.graphics;
 	requires javafx.controls;
-	exports com.linux.simple.generators;
 	exports com.linux.simple;
 }
\ No newline at end of file

From 53017c11e740b6c25917dce302107b1cd66af76b Mon Sep 17 00:00:00 2001
From: Guruprasad Kulkarni <guruprasad.kulkarni@idnow.de>
Date: Mon, 8 Jan 2018 17:53:15 +0100
Subject: [PATCH 09/14] Moved packages and removed old files

---
 jpms/anotherapp/ComplexApp.java | 24 ------------------------
 1 file changed, 24 deletions(-)
 delete mode 100644 jpms/anotherapp/ComplexApp.java

diff --git a/jpms/anotherapp/ComplexApp.java b/jpms/anotherapp/ComplexApp.java
deleted file mode 100644
index 8064e21..0000000
--- a/jpms/anotherapp/ComplexApp.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.linux.complex;
-
-import javafx.application.Application;
-import javafx.stage.Stage;
-
-import com.linux.simple.generators.ContentsGenerator;
-
-/**
- * ComplexApp
- */
-public class ComplexApp extends Application{
-	public static void main(String[] args) {
-		launch(args);
-	}
-
-	public void start(Stage primaryStage) {
-		ContentsGenerator contentsGenerator = ContentsGenerator.getInstance();
-		contentsGenerator.generateContent(primaryStage, "Complex JavaFX Application", ComplexApp.class.getSimpleName());
-		primaryStage.show();
-	}
-
-}
-		
-// javac --module-path simple complex/module-info.java complex/com/linux/complex/ComplexApp.java
\ No newline at end of file

From e141ca721ae6caa36797978c7b3ab7d0cd9598a8 Mon Sep 17 00:00:00 2001
From: Guruprasad Kulkarni <guruprasad.kulkarni@idnow.de>
Date: Mon, 8 Jan 2018 18:05:55 +0100
Subject: [PATCH 10/14] Moved packages and fixed 03-internal

---
 jpms/complex/com/linux/complex/ComplexApp.java | 3 ++-
 jpms/complex/module-info.java                  | 1 +
 jpms/simple/com/linux/simple/SimpleUiApp.java  | 2 +-
 jpms/simple/module-info.java                   | 1 +
 4 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/jpms/complex/com/linux/complex/ComplexApp.java b/jpms/complex/com/linux/complex/ComplexApp.java
index 8064e21..5d27f6c 100644
--- a/jpms/complex/com/linux/complex/ComplexApp.java
+++ b/jpms/complex/com/linux/complex/ComplexApp.java
@@ -21,4 +21,5 @@ public void start(Stage primaryStage) {
 
 }
 		
-// javac --module-path simple complex/module-info.java complex/com/linux/complex/ComplexApp.java
\ No newline at end of file
+// javac --module-path simple complex/module-info.java complex/com/linux/complex/ComplexApp.java
+// java --module-path simple:complex --module complex/com.linux.complex.ComplexApp
\ No newline at end of file
diff --git a/jpms/complex/module-info.java b/jpms/complex/module-info.java
index 7dd77af..cac0122 100644
--- a/jpms/complex/module-info.java
+++ b/jpms/complex/module-info.java
@@ -2,4 +2,5 @@
 	requires javafx.graphics;
 	requires javafx.controls;
 	requires simple;
+	exports com.linux.complex;
 }
\ No newline at end of file
diff --git a/jpms/simple/com/linux/simple/SimpleUiApp.java b/jpms/simple/com/linux/simple/SimpleUiApp.java
index a05b057..9a8c1b5 100644
--- a/jpms/simple/com/linux/simple/SimpleUiApp.java
+++ b/jpms/simple/com/linux/simple/SimpleUiApp.java
@@ -20,5 +20,5 @@ public void start(Stage primaryStage) {
 
 
 // cd jpms
-// javac app/module-info.java app/com/linux/simple/SimpleUiApp.java app/com/linux/simple/generators/ContentsGenerator.java app/com/linux/simple/generators/internal/DefaultContentsGenerator.java
+// javac simple/module-info.java simple/com/linux/simple/SimpleUiApp.java simple/com/linux/simple/generators/ContentsGenerator.java simple/com/linux/simple/generators/internal/DefaultContentsGenerator.java
 // java --module-path simple --module simple/com.linux.simple.SimpleUiApp
\ No newline at end of file
diff --git a/jpms/simple/module-info.java b/jpms/simple/module-info.java
index 7967644..8927e9d 100644
--- a/jpms/simple/module-info.java
+++ b/jpms/simple/module-info.java
@@ -1,5 +1,6 @@
 module simple {
 	requires javafx.graphics;
 	requires javafx.controls;
+	exports com.linux.simple.generators;
 	exports com.linux.simple;
 }
\ No newline at end of file

From de49651bc5fdc6968aa31cab68f0210b846eb6f2 Mon Sep 17 00:00:00 2001
From: Guruprasad Kulkarni <guruprasad.kulkarni@idnow.de>
Date: Mon, 8 Jan 2018 18:21:53 +0100
Subject: [PATCH 11/14] removed other folders

---
 .../addition/CollectionOfMethods.java         |  99 --------------
 .../CompletableFutureAdditions.java           |  41 ------
 .../SimpleUserService.java                    |  32 -----
 .../improvment/StreamsImprovements.java       | 122 ------------------
 .../trywithresources/TryWithResources.java    |  47 -------
 5 files changed, 341 deletions(-)
 delete mode 100644 com/linux/java/se/nine/collection/addition/CollectionOfMethods.java
 delete mode 100644 com/linux/java/se/nine/completable/future/improvment/CompletableFutureAdditions.java
 delete mode 100644 com/linux/java/se/nine/privateinterfacemethods/SimpleUserService.java
 delete mode 100644 com/linux/java/se/nine/streams/improvment/StreamsImprovements.java
 delete mode 100644 com/linux/java/se/nine/trywithresources/TryWithResources.java

diff --git a/com/linux/java/se/nine/collection/addition/CollectionOfMethods.java b/com/linux/java/se/nine/collection/addition/CollectionOfMethods.java
deleted file mode 100644
index 204d606..0000000
--- a/com/linux/java/se/nine/collection/addition/CollectionOfMethods.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package com.linux.java.se.nine.collection.addition;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * CollectionOfMethods
- */
-public class CollectionOfMethods {
-	public static void main(String[] args) {
-		System.out.printf("%n%nPre Java 9 Vs Java 9 %s%n%n", "Lists");
-
-		// Old
-		List<Integer> oldStyleList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
-		print(oldStyleList, "oldStyleList");
-		List<Integer> oldStyleSingleElementList = Collections.singletonList(100);
-		print(oldStyleSingleElementList, "oldStyleSingleElementList");
-		List<Integer> oldStyleEmptyList = Collections.emptyList();
-		print(oldStyleEmptyList, "oldStyleEmptyList");
-
-		System.out.printf("%n%n--%n%n");
-		
-		// Java 9
-		List<Integer> newStyleList = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
-		print(newStyleList, "newStyleList");
-		List<Integer> newStyleSingleElementList = List.of(100);
-		print(newStyleSingleElementList, "newStyleSingleElementList");
-		List<Integer> newStyleEmptyList = List.of();
-		print(newStyleEmptyList, "newStyleEmptyList");
-		
-		System.out.printf("%n%nPre Java 9 Vs Java 9 %s%n%n", "Sets");
-		// ---------- Sets  ----------
-		// Old
-		Set<String> oldStyleSet = new HashSet<>();
-		oldStyleSet.add("One");
-		oldStyleSet.add("Two");
-		oldStyleSet.add("Three");
-		oldStyleSet.add("Four");
-		oldStyleSet.add("Five");
-		print(oldStyleSet, "oldStyleSet");
-		
-		Set<String> oldStyleSingleElementSet = Collections.singleton("Hundred!");
-		print(oldStyleSingleElementSet, "oldStyleSingleElementSet");
-		
-		Set<String> oldStyleEmptySet = Collections.emptySet();
-		print(oldStyleEmptySet, "oldStyleEmptySet");
-		
-		System.out.printf("%n%n--%n%n");
-		// Java 9
-		Set<String> newStyleSet = Set.of("One", "Two", "Three", "Four", "Five");
-		print(newStyleSet, "newStyleSet");
-		
-		Set<String> newStyleSingleElementSet = Set.of("Hundred!");
-		print(newStyleSingleElementSet, "newStyleSingleElementSet");
-		
-		Set<String> newStyleEmptySet = Set.of();
-		print(newStyleEmptySet, "newStyleEmptySet");
-		
-		System.out.printf("%n%nPre Java 9 Vs Java 9 %s%n%n", "Maps");
-		Map<Integer, String> oldStyleMap = new HashMap<>();
-		oldStyleMap.put(1, "One");
-		oldStyleMap.put(2, "Two");
-		oldStyleMap.put(3, "Three");
-		oldStyleMap.put(4, "Four");
-		oldStyleMap.put(5, "Five");
-		print(oldStyleMap, "oldStyleMap");
-		
-		Map<Integer, String> oldStyleBadMap = new HashMap<>(){{put(1, "One");put(2, "Two");put(3, "Three");put(4, "Four");put(5, "Five");}};
-		print(oldStyleBadMap, "oldStyleBadMap");
-		
-		Map<Integer, String> oldStyleSingleElementMap = Collections.singletonMap(100, "Hundred!");
-		print(oldStyleSingleElementMap, "oldStyleSingleElementMap");
-		
-		Map<Integer, String> oldStyleEmptyMap = Collections.emptyMap();
-		print(oldStyleEmptyMap, "oldStyleEmptyMap");
-
-		System.out.printf("%n%n--%n%n");
-		
-		Map<Integer, String> newStyleMap = Map.of(1, "One", 2, "Two", 3, "Three", 4, "Four", 5, "Five");
-		print(newStyleMap, "newStyleMap");
-
-		Map<Integer, String> newStyleSingleElementMap = Map.of(1, "Hundred!");
-		print(newStyleSingleElementMap, "newStyleSingleElementMap");
-		
-		Map<Integer, String> newStyleEmptyMap = Map.of();
-		print(newStyleEmptyMap, "newStyleEmptyMap");
-	}
-	
-	private static void print(Object c, String identifier) {
-		System.out.println(String.join("", Collections.nCopies(150, "-")));
-		System.out.printf("%-30s :: Type : %-50s | Elements : %s%n",identifier, c.getClass(), c);
-	}
-
-}
\ No newline at end of file
diff --git a/com/linux/java/se/nine/completable/future/improvment/CompletableFutureAdditions.java b/com/linux/java/se/nine/completable/future/improvment/CompletableFutureAdditions.java
deleted file mode 100644
index 459f601..0000000
--- a/com/linux/java/se/nine/completable/future/improvment/CompletableFutureAdditions.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.linux.java.se.nine.completable.future.improvment;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-
-/**
- * CompletableFutureAdditions
- */
-public class CompletableFutureAdditions {
-	public static void main(String[] args) {
-		CompletableFutureAdditions additions = new CompletableFutureAdditions();
-		CompletableFuture<String> cf = CompletableFuture.supplyAsync(() -> additions.sleep(2));
-		System.out.println(" Original Completable Future is done ?" + cf.isDone());
-
-		CompletableFuture<String> newCopy = cf.copy();
-		System.out.println(" Copy of Completable Future is done ?" + cf.isDone());
-		newCopy.completeExceptionally(new InterruptedException("Some message"));
-
-		CompletableFuture<String> completeOnTimeOut = cf.copy().completeOnTimeout("Failed to complete", 1, TimeUnit.SECONDS);
-		System.out.println("Completable Future Complete on Timeout is done ?" + cf.isDone());
-
-		cf.thenAccept(System.out::println);
-		newCopy.thenAccept(System.out::println);
-		completeOnTimeOut.thenAccept(System.out::println);
-
-
-		additions.sleep(5);
-
-	}
-
-
-	private String sleep(int sleepTimeSeconds) {
-		try {
-			Thread.sleep(TimeUnit.SECONDS.toMillis(sleepTimeSeconds));
-		} catch (InterruptedException e) {
-			throw new RuntimeException(e);
-		}
-		return "Done : " + System.currentTimeMillis() + " By " + Thread.currentThread().getName();
-	}
-	
-}
\ No newline at end of file
diff --git a/com/linux/java/se/nine/privateinterfacemethods/SimpleUserService.java b/com/linux/java/se/nine/privateinterfacemethods/SimpleUserService.java
deleted file mode 100644
index a782fab..0000000
--- a/com/linux/java/se/nine/privateinterfacemethods/SimpleUserService.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.linux.java.se.nine.privateinterfacemethods;
-
-interface UserService{
-
-	default String getUser() {
-		return getUserFromEnv();
-	}
-	
-	static String getSystemUser(){
-		return getUserFromEnv();
-	}
-	
-	private static String getUserFromEnv() {
-		return System.getenv("USER");
-	}
-
-}
-
-public class SimpleUserService implements UserService{
-
-	@Override
-	public String getUser() {
-		return "john";
-	}
-
-	public static void main(String[] args) {
-		UserService s = new SimpleUserService();
-		System.out.println("Current User :: " + s.getUser());
-		System.out.println("Current System User :: " + UserService.getSystemUser());
-	}
-
-}
\ No newline at end of file
diff --git a/com/linux/java/se/nine/streams/improvment/StreamsImprovements.java b/com/linux/java/se/nine/streams/improvment/StreamsImprovements.java
deleted file mode 100644
index d3cbf0f..0000000
--- a/com/linux/java/se/nine/streams/improvment/StreamsImprovements.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package com.linux.java.se.nine.streams.improvment;
-
-import java.time.LocalDate;
-import java.time.Month;
-import java.time.Period;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.function.Predicate;
-import java.util.stream.Stream;
-
-import static java.util.Comparator.comparing;
-import static java.util.stream.Collectors.toList;
-
-
-/**
- * StreamsImprovements
- */
-
-public class StreamsImprovements {
-	private static final Book ej3e = new Book("Effective Java 3rd Edition", "Joshua Bloch", "978-0-13-468599-1", LocalDate.of(2017, Month.DECEMBER, 20));
-	private static final Book cjs9fi = new Book("Core Java SE 9 for the Impatient, 2nd Edition", "Cay S. Horstmann", "978-0-13-469472-6", LocalDate.of(2017, Month.SEPTEMBER, 15));
-	private static final Book j9fp = new Book("Java 9 for Programmers, 4th Edition", "Paul J. Deitel, Harvey Deitel", "978-0-13-477756-6", LocalDate.of(2017, Month.MAY, 11));
-	private static final Book ej2e = new Book("Effective Java 2nd Edition", "Joshua Bloch", "978-0-321-35668-0", LocalDate.of(2008, Month.MAY, 8));
-	private static final Book rwjeep = new Book("Real World Java EE Patterns", "Adam Bien", "978-1-300-14931-6", LocalDate.of(2012, Month.SEPTEMBER, 5));
-	private static final Book rwjeenh = new Book("Real World Java EE Night Hacks", "Adam Bien", "978-0-557-07832-5", LocalDate.of(2008, Month.MAY, 8));
-
-
-	public static void main(String[] args) {
-		Predicate<Book> publishDateGreaterThan2012 = b -> b.getPublishDate().getYear() > 2012;
-
-		print(getBooks().collect(toList()), "***** Original List *****");
-
-		List<Book> booksWithSkip = getBooks()
-				.skip(3)
-				.collect(toList());
-		print(booksWithSkip, "Java 8 ... skip 3");
-
-		List<Book> booksWithDropWhile = getBooks()
-				.dropWhile(publishDateGreaterThan2012)
-				.collect(toList());
-		print(booksWithDropWhile, "Java 9 ... dropWhile publishDateGreaterThan2012");
-
-		List<Book> booksWithLimit = getBooks()
-				.limit(3)
-				.collect(toList());
-		print(booksWithLimit, "Java 8 ... limit");
-
-		List<Book> booksWithTakeWhile = getBooks()
-				.takeWhile(publishDateGreaterThan2012)
-				.collect(toList());
-		print(booksWithTakeWhile, "Java 9 ... takeWhile publishDateGreaterThan2012");
-
-	}
-
-
-	/**
-	 * New recommendation from Joshua Bloch -- If you know that the callers of your method are happy using Stream as a return, use it!!!!
-	 */
-	private static Stream<Book> getBooks() {
-		return Stream.of(ej3e, cjs9fi, j9fp, ej2e, rwjeep, rwjeenh).sorted(comparing(Book::getPublishDate).reversed());
-	}
-
-	private static void print(List<?> list, String identifier) {
-		System.out.println(identifier);
-		list.forEach(System.out::println);
-		System.out.println(String.join("", Collections.nCopies(150, "-")));
-	}
-
-
-	static class Book {
-		private final String name;
-		private final String author;
-		private final String isbn;
-		private final LocalDate publishDate;
-
-		Book(String name, String author, String isbn, LocalDate publishDate) {
-			this.name = name;
-			this.author = author;
-			this.isbn = isbn;
-			this.publishDate = publishDate;
-		}
-
-		public Period getBookAgeinMonths() {
-			return Period.between(publishDate, LocalDate.now());
-		}
-
-		/**
-		 * @return the name
-		 */
-		public String getName() {
-			return name;
-		}
-
-		/**
-		 * @return the isbn
-		 */
-		public String getIsbn() {
-			return isbn;
-		}
-
-		/**
-		 * @return the publishDate
-		 */
-		public LocalDate getPublishDate() {
-			return publishDate;
-		}
-
-		/**
-		 * @return the author
-		 */
-		public String getAuthor() {
-			return author;
-		}
-
-		@Override
-		public String toString() {
-			return String.format("Book{name=%-50s\tauthor=%-30s\tisbn=%-20s\tpublishDate=%10s}", name, author, isbn, publishDate);
-		}
-
-	}
-}
diff --git a/com/linux/java/se/nine/trywithresources/TryWithResources.java b/com/linux/java/se/nine/trywithresources/TryWithResources.java
deleted file mode 100644
index 9edaefb..0000000
--- a/com/linux/java/se/nine/trywithresources/TryWithResources.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.linux.java.se.nine.trywithresources;
-
-import java.util.concurrent.TimeUnit;
-
-class SimpleResource implements AutoCloseable{
-	private final String name;
-
-	SimpleResource(String name) {
-		this.name = name;
-	}
-
-	public String doWork(String context) {
-		try{
-			TimeUnit.SECONDS.sleep(2);
-		} catch(InterruptedException ie) {
-			throw new RuntimeException(ie);
-		}
-		return "Work Done for " + context;
-	}
-
-	@Override
-	public void close() {
-		System.out.println("Resource " + name + " closed");
-	}
-}
-
-/**
- * TryWithResources
- */
-public class TryWithResources {
-	public static void main(String[] args) {
-		System.out.println("-- Before :: ");
-		try(SimpleResource res = new SimpleResource("insideTryWithResource")){
-			String workResponse = res.doWork("old style try with resources");
-			System.out.println(workResponse);
-		}
-
-
-		System.out.println("-- After :: ");
-		SimpleResource resource = new SimpleResource("OutsideTryWithResource");
-		try(resource) {
-			String workResponse = resource.doWork("yay! java 9");
-			System.out.println(workResponse);
-		}
-
-	}
-}
\ No newline at end of file

From 14286b6f6589a803387d803134d2d752ac1100c9 Mon Sep 17 00:00:00 2001
From: Guruprasad Kulkarni <guruprasad.kulkarni@idnow.de>
Date: Thu, 18 Jan 2018 11:27:25 +0100
Subject: [PATCH 12/14] Updated Readme

---
 README.md | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index bcd85c3..d338095 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,20 @@
 # Java-9-Discovery
 Java 9 Meetup
 
-For more details see https://github.com/gurukulkarni/Java-9-Discovery/wiki
 
 
-find Java-9-Discovery -type f -name "*.class" -exec rm -v {} +   // linux? or gnu command to remove all .class files from the project
\ No newline at end of file
+To run this program, you need to (of course install Java 9 and setup you PATH properly)
+1. Change to the directory where this README.md is.
+2. cd jpms
+3. javac simple/module-info.java simple/com/linux/simple/SimpleUiApp.java simple/com/linux/simple/generators/ContentsGenerator.java simple/com/linux/simple/generators/internal/DefaultContentsGenerator.java
+4. java --module-path simple --module simple/com.linux.simple.SimpleUiApp
+
+More commands to run : can be found : (better syntax highlighting)
+https://github.com/gurukulkarni/Java-9-Discovery/blob/04-internal-fixed/jpms/simple/com/linux/simple/SimpleUiApp.java
+https://github.com/gurukulkarni/Java-9-Discovery/blob/04-internal-fixed/jpms/complex/com/linux/complex/ComplexApp.java
+
+For more details see https://github.com/gurukulkarni/Java-9-Discovery/wiki
+
+find . -type f -name "*.class" -exec rm -v {} +   // linux (actually GNU) command to remove all .class files from the project.
+This is needed so that when you switch with class files remaining and the directory structure changes, git cannot remove the directories as it is not empty.
+And no too mention I am too lazy to figure out how to configure VS Code to sent proper command to force this.
\ No newline at end of file

From 8650073c2cf6c8c7994d1488237913bfe00d1dcb Mon Sep 17 00:00:00 2001
From: Guruprasad Kulkarni <guruprasad.kulkarni@idnow.de>
Date: Thu, 18 Jan 2018 11:27:57 +0100
Subject: [PATCH 13/14] removed blank lines

---
 README.md | 2 --
 1 file changed, 2 deletions(-)

diff --git a/README.md b/README.md
index d338095..e7832e6 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,6 @@
 # Java-9-Discovery
 Java 9 Meetup
 
-
-
 To run this program, you need to (of course install Java 9 and setup you PATH properly)
 1. Change to the directory where this README.md is.
 2. cd jpms

From b12b59689863d985fb4e0ae29c7d08c11bd524c1 Mon Sep 17 00:00:00 2001
From: Guruprasad Kulkarni <guruprasad.kulkarni@idnow.de>
Date: Thu, 18 Jan 2018 12:11:48 +0100
Subject: [PATCH 14/14] Added blankspace

---
 README.md | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index e7832e6..849027a 100644
--- a/README.md
+++ b/README.md
@@ -8,11 +8,15 @@ To run this program, you need to (of course install Java 9 and setup you PATH pr
 4. java --module-path simple --module simple/com.linux.simple.SimpleUiApp
 
 More commands to run : can be found : (better syntax highlighting)
+
 https://github.com/gurukulkarni/Java-9-Discovery/blob/04-internal-fixed/jpms/simple/com/linux/simple/SimpleUiApp.java
+
 https://github.com/gurukulkarni/Java-9-Discovery/blob/04-internal-fixed/jpms/complex/com/linux/complex/ComplexApp.java
 
 For more details see https://github.com/gurukulkarni/Java-9-Discovery/wiki
 
-find . -type f -name "*.class" -exec rm -v {} +   // linux (actually GNU) command to remove all .class files from the project.
+find . -type f -name "*.class" -exec rm -v {} +
+
+Linux (actually GNU) command to remove all .class files from the project.
 This is needed so that when you switch with class files remaining and the directory structure changes, git cannot remove the directories as it is not empty.
 And no too mention I am too lazy to figure out how to configure VS Code to sent proper command to force this.
\ No newline at end of file
