I'm pretty newbie (or maybe oldie) with GUI development. Now when digging in, there seems to be massive amount of different frameworks to use. Currently I have built a java application which scrapes all kind of file and application meta data to a PostgreSQL database. This part is now pretty much ready and the data (around 20000 rows) is sitting in server database waiting for further usage. I assume that eventually there could be hundreds of thousands of rows in the database in handful of tables, maybe million or two max.
One road would have been continuing with Java Swing/FX, but the front-end should be really OS independent and easily to approach which points to web based solutions. Seems that applets are pretty old stuff and also JSF have plenty of viable competitors by now. The requirements for the gui are:
- About four sections in a single page. Layout something like Eclipse or Netbeans IDE.
- One of the section has a traversable filesystem type of tree map eg. JsTree.
- The main section has an interactive graphical map with nodes and edges etc. Currently looking Graphstream as one candidate for this
- Simple detail information table on the bottom of the page.
- Three of the sections should interact with each other when user clicks something eg. clicking a node gives detailed information of it in the bottom section (triggering a query against database)
- Currently there are no plans to give user possibility to change the data she/he is viewing
- Trying to keep this in single page, but can probably grow to multiple pages in the future.
- Need to have some authorization system and also keeping it secure through viewing. Currently have only a user table in DB with hashed and salted passwords.
First thought was to build this purely on server; building all the tree maps etc based on user requests. However, with several users this probably would generate a significant load on the server side. Therefore thought if there would be just minimal amount of server side code logic, just to secure/isolate the database queries, forming the main HTML/CSS stuff and then have embedded Javascript logic drawing the graphics, interpreting user inputs etc. on the client side? Currently one mystery is that how would these two worlds communicate with each other, I mean how the javascript part request the information from the server side? Does it require websockets or could some of the server side application logic act like a REST/API interface to the javascript code? Maybe just have a jersey/swing REST middleware Java "something" between the database and web page providing JSON data to Javascript logic. Playing now with Hibernate but not sure if it would fit in to this scenario...
Have written code in Java, C, Python, JS and some ancient other languages + little Node.js, PHP and Perl. Prefering Java and JS, but if there's good reason using something else, it shouldn't be a problem. Currently using Netbeans (occasionally Eclipse) and have investigated some of the Web, JavaFX, HTML5, JSF, Maven example projects it has. Have also tried to research Spring, Hibernate, Vaadin, Wicket, JSF and whatnot frameworks. Everyone is telling how easy and superior they are, but the more I read/test these, the more it seems that they aren't always that helpful by creating all kind of extra code here and there. So after days of investigation, I'm still very lost with all these possibilities and before getting forever lost to this jungle, I thought that maybe some guru here could point out which path this n00b should take? Just trying to avoid the situation where half of the stuff is done and then need to change framework because missing some feature or maintenance is getting overwhelming.