El objetivo del proyecto digamos que es que una aplicación web corra en un ordenador, por lo que necesitaremos un navegador. Por esto es por lo que usaremos Thrust.
Pero...¿qué es Thrust?.
Chromium-based cross-platform / cross-language application framework
Thrust is
require/import-able, it lets you distribute NodeJS, Go or Python GUI apps directly through their native package managers.
Thrust is based on Chromium's Content Module and is supported on Linux, MacOSX and Windows
Thrust nos ofrece una estructura para poder usar un navegador en cualquiera de los tres sistemas operativos más usados.
La idea es traducir el proyecto de Thrust en Scala (https://github.com/eklavya/scala-thrust/) a Java.
[Thrust Architecture]
(Platform) [stdio] (Your Implementation)
#
+--------------+ # +-----------------------+
| Cocoa / Aura | # +---| win3: (HTML/JS) |
+-------+------+ # | +-----------------------++
| # +--| win2: (HTML/JS) |
+------------+ +-------+------+ # | +-----------------------++
| +-+ thrust (C++) +-------+-+ win1: (HTML/JS) |
| ContentAPI | +-------+------+ # +-----------------------+
| | | # | (TCP/FS)
| (Blink/v8) | +-------+------+ # +-----------------------+
| | + JSON RPC srv +---------+ Client App (JAVA) | |
+------------+ +--------------+ # +-----------------------+
#
Actualmente estoy por la mitad de las clases, en principio no tiene mucha complicación ya que la mayoría es definición de clases y atributos, aunque hay algunas cosas que tengo que revisar en profundidad como son las promesas y futuros en Java y los típicos problemas que vayan surgiendo..
Otro de los problemas que me han surgido es como podría resolver las duplas y pasar funciones como parámetro, (un TrieMap que tiene como clave (Int - String) y como parámetro una función) quizá use un Array bidimensional para las duplas y las nuevas expresiones Lambda de Java8.