Your normal class is not registered in OSGi.. So you cannot use any of service in it... Even if you just use @Component annotation you can use other OSGi components in your class..
Use some other API.. jackson and gson can be used here. I believe both are available with AEM 6.3cq5 - org.apache.sling.commons.json.JSONArray is deprecated in AEM 6.3 - Stack Overflow
This is how templates are supposed to work.. When you create a page out of a template, properties of template are copied to page and then any change made further to the template wont be reflected in pages created earlier. If you even delete the template, the page would continue to work....
Take a look at Search DAM assets and Cq pages using lastModified date | QueryBuilder . It used DateRangePredicateEvaluator (Day Communique 5.4 Java Documentation 5.4.0-SNAPSHOT API)
I dont think, all changes are needed. Just 2 dependency versions need to be updated.. Here is a blog that talks about similar issue: Issues while Migrating from Java6 to Java8 in AEM 6.1 | TO THE NEW Blog
When you say drag and drop in a page, you still mean parsys, correct? Dont know what you mean by "Since the par defined in the open parsys doesn't exist"If dropped in parsys, the node of the component would always be under "par"(parsys) node..