2009-09-24 5 views
13

Ho letto di Rhino come un modo utile per implementare JavaScript all'interno del mio codice Java.Vantaggi dell'uso di Rhino (rinoceronte di Mozilla)

Dopo aver letto per un po ', cercando in google e qui, non ho trovato una vera ragione per cui avrei usato JavaScript all'interno di Java.

Puoi indicare alcuni vantaggi del mondo reale che trovi su Rhino per una normale applicazione Java?

+0

In aggiunta a ciò che altri hanno detto, lo sviluppo del gioco è un ottimo esempio. Avere script esterni è una pratica molto comune nello sviluppo del gioco per una serie di motivi, e se stai scrivendo un gioco in Java e vuoi usare JavaScript come linguaggio di scripting, Rhino è fantastico. – Josh1billion

risposta

10
  1. XML Elaborazione con Rhino e E4X è una gioia rispetto alla maggior parte delle API XML Java
  2. Hai esistenti JavaScript che "semplicemente funziona" e non si vuole ri-scriverlo. Questo può accadere se si ha qualche calcolo o elaborazione sul lato client e lo si sposta sul server.
  3. Tutti i tipi di caching pulito e trucchi di caricamento del codice.
  4. Il tuo problema è risolto meglio con un linguaggio più dinamico di Java.
  5. di lista;)
+1

Hai ragione. Userei Jython anziché JavaScript per coprire la maggior parte dei punti che hai fornito. Ma il tuo probabilmente un java non lo farebbe. – Santi

5

Il vantaggio di incorporare un linguaggio di script come javascript nel software è che è possibile offrire agli altri un modo per scrivere plug-in per il software senza fornire il codice sorgente.

Un motivo per scrivere l'intera app in un'altra lingua è che si è in grado di scrivere un'app per un'azienda che la distribuisce nell'ambiente Java EE senza dover imparare Java.

+1

Per consentire ad altri di collegarsi alla tua app senza dare via il codice sorgente, tutto ciò di cui hai bisogno è un pacchetto con alcune interfacce. –

+0

IBM Maximo 7.5 + fa questo (Rhino o Jython), e l'ulteriore vantaggio è che si evita di personalizzare il proprio software, il che rende gli aggiornamenti più agevoli. – Bratch

14

Si noti che da Java 6, l'API di scripting si trova nella libreria standard di Java - consultare la documentazione del pacchetto javax.script. L'API in javax.script è una versione adattata di Rhino. L'API di scripting supporta non solo JavaScript, ma molti altri linguaggi di scripting.

Vedi Java Scripting Programmer's Guide

La prima pagina non cita alcuni motivi si potrebbe desiderare di utilizzare script:

  • estensione Application/personalizzazione: È possibile "esternare" parti dell'applicazione - come script di configurazione, logica aziendale/regole ed espressioni matematiche per applicazioni finanziarie.
  • "Riga di comando" shell per applicazioni -per debugging, runtime/deploy time configuration ecc. La maggior parte delle applicazioni dispone di uno strumento di configuarizzazione GUI basato sul web in questi giorni. Ma gli amministratori di sistema/i deployer spesso preferiscono gli strumenti da riga di comando. Invece di inventare un linguaggio di scripting ad hoc per questo scopo, può essere usato un linguaggio di scripting "standard".

Un esempio: è possibile creare script Oracle WebLogic utilizzando script Python, ad esempio per configurare il dominio del server applicazioni, per avviare o arrestare il server e per fare altre attività di amministrazione.

+0

Quali sono queste altre lingue? –

+1

@WesleiPrudencio vedi http://stackoverflow.com/questions/11838369/where-can-i-find-a-list-of-available-jsr-223-scripting-lingue – Jesper

4

Usiamo JS (via Rhino) per un DSL in uno dei nostri prodotti. Non è un ottimo DSL, ma è un difetto di come utilizziamo JS, piuttosto che Rhino.

+0

Sono tutto sommato e dolce, ma non mi è chiaro a cosa si riferisca DSL in questo contesto. Vorresti illuminarmi? – WynandB

+1

DSL = lingua specifica del dominio. Fondamentalmente, avevamo bisogno di un linguaggio che permettesse alle persone di esprimere regole. Javascript è buono perché è facile impostare ciò che l'utente può e non può fare specificando ciò che è nel contesto globale. No include richiesto. – user1545858

0

Se si considera anche .Net, suggerisco di andare d'accordo con Rhino.

Oltre agli ambienti Java, il rhino è uno dei migliori interpreti delle prestazioni in ambiente .NET (utilizzando IKVM). D'altra parte, nashorn è molto lento su .net.

Portare il proprio progetto Rhino in .NET non è così difficile.