judoskrypt

judoskrypt
Paradygmat proceduralne , obiektowe , skryptowe
Zaprojektowany przez Jamesa Jianbo Huanga
Deweloper Jamesa Jianbo Huanga
Po raz pierwszy pojawiły się listopad 2001
Wersja stabilna
v0.9 / listopad 2005
Dyscyplina pisania dynamiczny , statyczny , mocny
Platforma JVM
Licencja LGPL
Strona internetowa judoscript.com
Pod wpływem
SQR , Perl , JavaScript , Java

Judoscript to język programowania ogólnego przeznaczenia przeznaczony głównie do zadań skryptowych na platformie Java . Został wymyślony i opracowany przez Jamesa Jianbo Huanga ( chiński uproszczony : 黄剑波 ; chiński tradycyjny : 黃劍波 ; pinyin : Huáng Jiànbō ), począwszy od końca 2001 roku. Judoscript był jednym z pierwszych tak zwanych języków skryptowych Java; ale jego najbardziej uderzającą cechą jest odważna filozofia i praktyka obsługi wielu domen.

Do końca 2005 roku Judoscript zrealizował wszystkie wyznaczone funkcje aplikacji. Sytuacja z językami skryptowymi Java szybko się zmieniła, gdy JavaSoft ogłosił stworzenie własnego języka w 2003 roku. Rozwój Judoscript został zatrzymany, gdy własny język Groovy firmy JavaSoft był bliski wydania.

Historia

Huang pracował nad narzędziem do tworzenia raportów komercyjnych, SQR , które jest szeroko stosowane w PeopleSoft . Technicznie rzecz biorąc, SQR jest archaicznym językiem skryptowym ogólnego przeznaczenia z wbudowanym SQL i dyrektywami raportowania do tworzenia raportów opartych na znakach i manipulacji danymi. Napisany w C, jest przenoszony do prawie wszystkich wersji głównych systemów operacyjnych i współpracuje ze wszystkimi głównymi RDBMS . Wraz z pojawieniem się Javy i JDBC , Huang szybko zdał sobie sprawę, że pojedyncza wersja takiego oprogramowania wyeliminowałaby całą gamę różnych portów SQR. To było ziarno idei Judoscript .

Nawet pod koniec lat 90. wbudowany SQL nie był nowym pomysłem; na przykład Pro*C firmy Oracle właśnie to zrobił. Co ciekawe, osadzony SQL jest rzeczywiście funkcją specyficzną dla domeny ( RDBMS ) wbudowaną w język ogólnego przeznaczenia. Wyrażenia regularne w Perlu to kolejny dobry przykład w dziedzinie obsługi tekstu. Wizja Judoscript zaczęła nabierać kształtu, aby być językiem skryptowym ogólnego przeznaczenia z deklaratywną ekspresją dla wielu popularnych dziedzin programowania w spójny sposób . Na przełomie tysiącleci, Internet zaczął przenikać nasze życie, a rosnąca liczba kluczowych technologii była powszechnie stosowana, dlatego wybór konkretnych domen do obsługi w Judoscript nie był zbyt trudny. W pewnym sensie ta wizja pojawiła się we właściwym czasie. Funkcje specyficzne dla domeny, które były zawarte w okresie istnienia Judoscript, obejmowały skrypty JDBC, programowanie SGML i XML w stylu SAX , skrypty WSDL, skrypty Ant, ujednolicony system plików i skrypty archiwów, skrypty Microsoft COM , uruchamianie natywnego systemu operacyjnego wykonywalnych, wysyłanie poczty, skrypty HTTP i SCP, a także skrypty Java. Gdyby Judoscript nadal się rozwijał, przewidywalnie zawierałby coraz więcej wsparcia specyficznego dla domeny w miarę upowszechniania się nowych technologii, takich jak NoSQL , AI itp.

Będąc językiem skryptowym opartym na JVM, Judoscript ma skrypty Java jako obywatel pierwszej klasy. Judoscript jest pionierem natywnej Ant , umożliwiając użytkownikom korzystanie z ogromnej puli narzędzi w ekosystemie Ant . Dzięki natywnym możliwościom tworzenia skryptów w językach Java, Ant, WSDL, HTTP i Microsoft COM użytkownicy Judoscript mogą łatwo korzystać z zasobów pochodzących z heterogenicznych źródeł. Podstawowym językiem Judoscript jest w dużej mierze JavaScript plus statyczna deklaracja klas. Jak każdy język skryptowy , Judoscript ma różne cukry składniowe , wielowierszowe literały łańcuchowe, literały XML i wyrażeń regularnych, uniwersalna instrukcja print itp. Jednak chociaż te aspekty dominują w projektowaniu większości innych języków, ogólna programowalność jest mniej istotnym tematem w porównaniu z kluczowymi, unikalnymi cechami języka.

Początkowe perspektywy Judoscript skrystalizowały się, a rozwój rozpoczął się pod koniec 2001 roku; pierwsza wersja została wydana w listopadzie. Judoscript stał się jednym z pierwszych języków skryptowych ogólnego przeznaczenia zaprojektowanych specjalnie do użytku z platformą Java, wraz z Rhino , BeanShell , Jython i kilkoma innymi.

W 2004 roku Judoscript zbliżył się do wersji 0.9. Rozwój trwał do 2005 roku, kiedy to wdrożono większość ostatecznych funkcji. Brakującą kluczową funkcją jest generowanie kodu bajtowego Java w trybie offline lub w czasie wykonywania, co uznano za niezbędne, aby taki język osiągnął wersję 1.0. W tym celu Huang wynalazł język asemblera makr Java, Jamajka. Ale ta praca dla Judoscript nigdy nie została osiągnięta.

W JavaOne 2003, w czerwcu, JavaSoft ogłosił zamiar stworzenia języka skryptowego będącego w całości własnością platformy Java. Ten monopolistyczny ruch zdusił życie większości jego konkurentów. W rezultacie powstał język Groovy, którego nazwa jest najwyraźniej fonetyczną odmianą „jruby”, a jego pierwsza wersja została wydana w 2007 roku. Wbudowana obsługa Ant jest podejrzanie powiązana z funkcją skryptową Ant w Judoscript, mówiąc chronologicznie . Kiedy Groovy miał zostać uwolniony, Judoscript stracił impet pójścia naprzód. Pod koniec 2005 roku, po zaledwie czterech latach, rozwój Judoscript został zatrzymany.

Mimo to judoscript pozostał drogi projektantom i miłośnikom języków i zajmuje miejsce w historii języków programowania , będąc pierwszym i prawdopodobnie jedynym językiem ogólnego przeznaczenia z wbudowanymi tak wieloma natywnymi funkcjami specyficznymi dla domeny. Przyczyna tego zostanie omówiona później.

Projektowanie języka

Projekt języka Judoscript łączy w sobie dwa różne smaki. Przede wszystkim jest to język skryptowy ogólnego przeznaczenia, jak każdy nowoczesny język programowania, wykorzystujący dynamiczne pisanie i notację kropkową do uzyskiwania dostępu do elementów obiektów. Obsługuje zarówno paradygmaty proceduralne, jak i obiektowe, obsługuje statyczne deklaracje klas i dziedziczenie. Różne cukry składniowe i wszechstronna print charakteryzują jego język skryptowy.

Judoscript jest w pełni zdolny do skryptowania zasobów Java. Jego funkcja statycznego pisania została wprowadzona głównie do wywoływania przeciążonych metod Java.

Drugi smak, który dystansuje Judoscript od reszty tłumu, jest ucieleśnieniem wielu natywnych stwierdzeń specyficznych dla domeny, z których każde ma zupełnie inny wygląd. Niektóre zwracają wartość, inne nie. Większość z tych specjalnych instrukcji może być używana jako zwykłe instrukcje w dowolnym miejscu programu.

Wyrażenia mogą być osadzone w instrukcjach specyficznych dla domeny tam, gdzie jest to stosowne. Wyrażenia można również osadzać w literałach tekstowych, takich jak ciągi znaków i wartości XML, co skutecznie czyni je szablonami tekstowymi.

Funkcje językowe I: potężny język skryptowy

Język bazowy

Podstawowy język Judoscript jest prawie identyczny z JavaScript w zakresie deklaracji zmiennych i stałych, instrukcji kontroli przepływu i notacji kropkowej w celu uzyskania dostępu do elementów obiektów. Oprócz dwóch komentarzy w stylu C++ ma trzecią formę, /? ?/ , przydatne do wyłączenia fragmentu kodu. Parametry funkcji mogą mieć wartości domyślne, a wywołanie może przyjmować nazwane wartości parametrów. Podobnie jak w JavaScript, funkcje są również obiektami i mogą być przekazywane jako wartości. Programowanie dynamiczne jest dostępne za pomocą eval i evalExternal .

Programowanie obiektowe

W przeciwieństwie do JavaScript, klasy zdefiniowane przez użytkownika są deklarowane statycznie, ale składowe danych są dynamiczne. Obsługiwane jest dziedziczenie wielokrotne, a programiści powinni radzić sobie z potencjalnymi problemami związanymi z dziedziczeniem diamentów. Instancje klas można transponować do innego typu.

 

   
        
      
  
       
       
 klasa  Węzeł  {  konstruktor  {  assert  (  nazwa  !=  null  );  // nakazuje, aby 'nazwa' była zainicjalizowana  children  =  [];  }  funkcja  addDziecko  dziecko  {  dzieci  .  dodaj  (  dziecko  );  }  funkcja  toString  {  nazwa  powrotu  ;  }  } 

Organizacja kodu

Judoscript ma dyrektywę !include , aby dołączyć inne skryptlety. Jest to jedyny mechanizm udostępniania kodu napisanego w Judoscript.

Brak obsługi pakietu lub modułu typu Java w innych językach jest celowy, aby zniechęcić do tworzenia bibliotek napisanych w Judoscript. Biblioteki wielokrotnego użytku są zachęcane do pisania w Javie i używania Judoscript (lub dowolnego języka skryptowego Java).

Cechy języka II: skrypty Java

Skrypty Java to obywatele pierwszej klasy w Judoscript. Poniżej wymieniono niektóre z najważniejszych funkcji skryptów Java. Zapoznaj się z dokumentacją, aby zobaczyć wszystkie zastosowania i przykłady.

Skryptowanie obiektów Java

   
      
   
     a  =  nowa  java  ::  java  .  utylizacja  _  HashMap  ;  za  .  put  (  data  ,  data  (  2001  ,  1  ,  1  ));  za  .  put  (  '  liczba całkowita  '  ,  1  );  za  .  put  (  '  podwójne  '  ,  10.01  ); 
     
  
    
    za  .  put  (  '  string  '  ,  '  Witaj  ,  świecie  !  '  );  za  .  put  (  Wymiar  ,  nowy  java  ::  java  .  awt  .  Wymiar  (  10  ,  20  ));  dla  k  w  .  _  klucze  ()  {  println  k     


   
              
           :  >  10  ,  '  =  '  ,  za  .  dostać  (  k  );  }  props  =  new  java  ::  Properties  (  a  .  b  .  c  .  d  .  e  .  f  .  g  =  '  a  thru  g  '  ,  h  .  i  .  j  .  k  .     
        
  ja  .  m  .  n  =  '  h  do  n  '  );  println  rekwizyty  ; 

Aliasowanie statycznych metod Java

Możliwość aliasowania statycznych metod Javy jako funkcji Judoscript jest ważnym mechanizmem, odpowiedzialnym za wiele wbudowanych funkcji.

   
    
     

  
  
 funkcja  prop  dla  java  ::  System  .  pobierzWłaściwość  ();  funkcja  teraz  dla  Java  ::  System  .  bieżący CzasMillis  ();  funkcja  rt  dla  java  ::  Runtime  .  getRuntime  ();  println  teraz  (),  nl  ;  println  prop  (  'java.class.path'  ),  nl  ;  rt  ().  gc  (); 

Używanie klas Java jako wartości

Klasy Java są również wartościami obiektowymi i można je przypisywać do zmiennych lub stałych.

   
         
      const  #  Typy  =  java  ::  java  .  sql  .  typy  ;  pola  =  [  'BIT'  ,  'MAŁE CAŁKOWITE'  ,  'MAŁE'  ,  'LICZBY CAŁKOWITE'  ,  'DUŻE'  ,  'FLOAT'  ,  'REAL'  ,  'PODWÓJNE '   ,  'LICZBOWE'  ,  'DZIESIĘTNE'  ,  'ZNAK'  ,    
        
        „VARCHAR”  ,  „LONGVARCHAR”  ,  „DATA”  ,  „CZAS”  , „ZNACZNIK CZASU”  ,  BINARNY”  , „ZMIENNY”  ,  DŁUGIZMIENNY”  ,  „NULL”  ,  „INNE”  ,  „JAVA_OBJECT”  ,  „DISTINCT”  ,  „STRUCT” '  ,  'TABLICA'  ,  'BLOB'  ,  'BLOB'  


   
    
     
 ,  'REF'  ];  println  'Typy JDBC w Javie'  ,  sysProperty  (  'java.version'  ),  ':'  ;  dla  fld  w  polach  {  println  fld  :<  13  ,  ': '  ,  #  Typy  .(  fld  );  } 

Rozszerzanie klas Java i implementacja interfejsów Java

Możliwe jest zdefiniowanie klas Judoscript, które rozszerzają klasy Java lub implementują interfejsy Java.

   

  
         

  
    
      
           class  MyHashMap  rozszerza  java  ::  HashMap  {  // Test nadpisywania istniejącej metody  int  hashCode  ()  {  return  super  .  hashCode  ()  ^  1  ;  }  // Nowa metoda.  String  []  getKeys  ()  {  tablica  =  []  ;  dla  x  w  tym  {  przyp  .  dodaj  (  x  );  } 
     
  

  
    
      
          
     
  
 plan  powrotu  _  toStringArray  ();  }  // Nowa metoda.  Obiekt  []  getValues  ​​()  {  tablica  =  []  ;  dla  x  w  wartościach  ()  {  arr  .  dodaj  (  x  );  }  powrót  arr  .  toObjectArray  ();  }  } 

Można tworzyć i używać anonimowych adapterów interfejsu Java.

 
 

   

    
         0 
  

 importuj  java.awt.Frame  ;  import  java.awt.event.*  ;  f  =  nowa  java  ::  Ramka  ;  fa  .  addWindowListener  (  nowy  java  ::  WindowListener  {  void  windowClosing  (  WindowEvent  e  )  {  exit  ;  }  }  );  fa  .  setVisible  (  prawda  ); 

Funkcje językowe III: obsługa specjalnych domen

Ta część języka sprawia, że ​​Judoscript jest wyjątkowy. Każda główna obsługa domeny zostanie krótko omówiona, zwykle z przykładami.

skrypty JDBC

Skrypty JDBC są centralną cechą Judoscript, a także kluczową motywacją dla samego języka. Sprawia, że ​​operacje na bazie danych są intuicyjne i wygodne.

Poniżej znajduje się przykład, który łączy się z bazą danych i uruchamia niektóre instrukcje SQL.

    
  
     

 
           
                     db  ::  połącz się  z  'jdbc:oracle:thin:@dbsvr:1521:dbname'  ,  'user'  ,  'pass'  ;  if  tableExists  (  'EMP'  )  {  db  ::  sql  :  DROP  TABLE  emp  ;  }  db  ::  sql  {  UTWÓRZ  TABELĘ  emp  (  emp_no  INTEGER  PRIMARY  KEY  ,  imię  VARCHAR      
                          
                               
                                

      
      

     (  100  ),  //  Imię  nazwisko  VARCHAR  (  100  ),  //  Nazwisko  data_  urodzenia  DATA  ,  --  Data urodzenia  wynagrodzenie  LICZBA  );  -- Wynagrodzenie  CREATE  INDEX  emp_fname  ON  emp  (  imię  );  UTWÓRZ  INDEKS  emp_lname  ON  emp  (  nazwisko_  );  WSTAW  DO  emp  ( 
       0

  
 numer_zatrudnienia  ,  imię  ,  nazwisko  ,  data_urodzenia  ,  wynagrodzenie  )  WARTOŚCI  (  100  ,  'Jim'  ,  'Malone'  ,  to_date  (  '1-3-1954'  ,  'dd-mm-rrrr'  ),  86500  .  );  }  println  'db::sql wynik: '  ,  $  _  ;  rozłącz  (); 

Korzystanie z procedur składowanych odbywa się za pomocą instrukcji db:any .

 
    
       
           
          
   
      
         
          
    
       db  ::  any  [[  *  CREATE  PROCEDURA  test_proc  (  param_io  IN  OUT  NUMBER  ,  param_i  IN  VARCHAR  ,  param_o  OUT  VARCHAR  )  AS  BEGIN  param_o  :  =  param_i  ;  JEŚLI  param_io  NIE  JEST  NULL  TO  param_io  :  =  param_io  +  1  ;  ELSE  param_io   
     
  
 :  =  -  1000  ;  KONIEC  JEŻELI  ;  KONIEC  ;  *  ]]; 

Bardziej interesującym zastosowaniem są sparametryzowane zapytania i aktualizacje. Zapytania i aktualizacje mogą być uruchamiane bezpośrednio lub z wyprzedzeniem.

 
           
                 


    
   db  ::  preparate  ins  :  INSERT  INTO  emp  (  praca_nr  ,  imię  ,  nazwisko  ,  data_urodzenia  ,  wynagrodzenie  )  WARTOŚCI  (  :  numer_pracownika  ,:  imię  ,:  nazwisko  ,:  data  urodzenia  ,:  wynagrodzenie  )  ;  _  _  _  dla  wiersza  w  wierszach  {  db  ::  sql       
                          0
                           
                     
                      
 ins  with  @empNr  :  liczba  całkowita  =  id  ++  ,  @  imię  =  wiersz  [  ],  @nazwisko  =  wiersz  [  1  ]  ,  @data  urodzenia  :  data  =  wiersz  [  2  ],  @  wynagrodzenie  :  liczba  =  wiersz  [  3  ];  } 

Poniżej znajduje się przykład zapytania.

 
       
   


  
        
  
    db  ::  zapytanie  qry  :  SELECT  numer_zatrudnienia  ,  imię  ,  nazwisko  ,  data_ urodzenia  ,  wynagrodzenie  Z  pracownik  ;  println  'Imię Nazwisko Wynagrodzenie Data Urodzenia'  ,  nl  ,  '--- ---------- ----------- -------- ----------'  ;  podczas gdy  qry  .  następny  ()  {  println  qry  [  1  ].  liczba całkowita  ()    
           
            
                
          
 :  <  5  ,  qry  .  imię  :  <  12  ,  qry  .  nazwisko_nazwisko  :  <  12  ,  qry  .  wynagrodzenie  :  *  7  .  1  ,  ' '  ,  qry  .  data_urodzenia  .  fmtDate  (  'rrrr-MM-dd'  );  } 

Przetwarzanie dokumentów SGML i XML

SGML to ogólny format hipertekstu, który zawiera HTML i XML. Istnieją dwa API do przetwarzania dokumentów XML: Simple API for XML (lub SAX) i Document Object Model (lub DOM). Przetwarzanie SAX skanuje cały tekst jako strumień i uruchamia zdarzenia dla każdego napotkanego znacznika lub segmentu tekstu. Judoscript ma urocze małe oświadczenie, które skutecznie wykorzystuje tę funkcję dla danych XML i SGML.

Kolejny przykład pokazuje istotę scrapingu HTML. Dzięki temu napisanie robota indeksującego witrynę internetową nie jest dalekie od rzeczywistości!

 zrób 'http://www.judoscript.org' as sgml {  <  a  >  : if $_.href != null { println 'Znaleziono hiperłącze:', $_.href; }   <  p  >  : println 'Znaleziono znacznik akapitu.'; TEKST: println 'Znaleziono jakiś tekst:', $_.length();  }  

Poniższy przykład przetwarza dane XML, które są dołączane na końcu skryptu.

 do $$local as xml {  <  book  >  : println ($_.hardcover=='true')?"Hard":"Soft", '-cover Book ------------';  <  data  >  TEKST: println ' Data: ', $_, ' (', $_.type, ')';  <  tytuł  >  TEKST: println ' Tytuł: ', $_;  <  autor  >  TEKST: println 'Autor: ', $_;  <  isbn  > 
 
  
  
   TEKST: println ' ISBN: ', $_; } EndScript ------------------------------------------------ -------   <  lista książek  >  <  książka  >  <  tytuł  >  UNIX w pigułce  </  tytuł  >  <  autor  >  Daniel Gilly  </  autor  >  <  wydawca  >  O  '  Reilly  &amp;  Associates, Inc.  </  wydawca  > 
  
   
   
 
  
   <  isbn  >  1-56592-001-5  </  isbn  >  <  typ  daty  =  "wydanie pierwsze"  >  1986-12  </  data  >  <  typ  daty  =  "wydanie drugie"  >  1992-06  </  data  >  </  książka  >  <  książka  w twardej oprawie  =  "true"  >  <  tytuł 
  
  
  
    >  Zaawansowane programowanie w środowisku UNIX  </  title  >  <  autor  >  Richard Stevens  </  autor  >  <  wydawca  >  Addison-Wesley  </  wydawca  >  <  isbn  >  0-201-56317-7  </  isbn  >  <  date  type  =  "copyright "  >  1993  </  data  > 
   
 
 <  typ  daty  =  "dwunasty druk"  >  1996-12  </  data  >  </  książka  >  </  lista książek  > 

Judoscript obsługuje również przetwarzanie DOM i XSLT dokumentów XML.

Skrypt Apache Ant

Apache Ant był przez długi czas systemem kompilacji dla Javy ; firmy i programiści stworzyli wiele rozszerzeń zwanych Task s, w żargonie Ant, a ekosystem Ant staje się skarbnicą wszelkiego rodzaju narzędzi, zarówno ogólnych, jak i zastrzeżonych. Judoscript zawiera mechanizm bezpośredniego wywoływania dowolnych zadań Ant. Poniżej znajduje się przykład.

  a = „mrówki”; anttask::   <  echo  message  =  "Witaj, ${a}!"  />  anttask::  <  echo  >  Witaj, więcej ${a}!  </  echo  > 

Istnieją sposoby uruchamiania natywnych plików wykonywalnych w Judoscript, ale możesz także skorzystać ze skryptów Ant, jak pokazano poniżej.

    
   
 źródło = '.'; anttask::   <  exec  dir  =  "${src}"  plik wykonywalny  =  "cmd.exe"  os  =  "Windows 2000"  output  =  "dir.txt"  >  <  arg  line  =  "/c dir"  />  </  exec  > 

Zunifikowany system plików i skrypty archiwów

Manipulowanie plikami jest jednym z najczęstszych zadań pracowników przetwarzających informacje. Judoscript stara się zapewnić spójną obsługę plików zarówno w systemach plików, jak i archiwach, takich jak pliki ZIP i kulki TAR.

Poniższe przykłady sprawdzają pliki w archiwum ZIP.

listFiles '*' w katalogu 'awebapp.zip' Tylko; for x in $_ { // pobierz status dla każdego katalogu listFiles '*.java, *.jj' in x recursive size compressorSize; println $_[0]:>8, '', $_[1]:>8, '', x; }

Następny przykład kopiuje pliki do archiwum ZIP. Nieznacznie zmieniając wyrażenia, możesz skopiować pliki do innej lokalizacji w systemie plików.

skopiuj „*.java, *.properties” w „C:/temp/classes/” rekurencyjnie do manifestu sklepu „judo.jar” [[* Manifest-Version: 1.0 Main-Class: judo Utworzony przez: James Jianbo Huang ( c) 2001-(* #rok *) *]] ;

Kolejny przykład ZIP z lepszą kontrolą.

zf = createZip('~/archives/work-'+Date().fmtDate('rrrrMMdd')+'.zip'); skopiuj „*” do „c:/judo/src/” oprócz „*/alfa*, */beta*, */save/*” rekurencyjne echo noHidden do zf pod „src/”; skopiuj „*” do „c:/judo/docs/” oprócz „*/alfa*, */beta*, */save/*” rekurencyjne echo noHidden do zf pod „docs/”; skopiuj „*” do „c:/judo/examples/” oprócz „*/alfa*, */beta*, */save/*” rekurencyjne echo noHidden do zf pod „examples/”; zf.zamknij();

I możesz kopiować zasoby internetowe do systemów plików lub archiwów, pokazanych poniżej.

tar = createTar('yahoo_comp.tar.gz'); zip = createZip('yahoo_comp.zip'); urls = [ 'http://dir.yahoo.com/Computers_and_Internet/index.html', 'http://dir.yahoo.com/Computers_and_Internet/Internet/index.html', 'http://dir.yahoo. com/Computers_and_Internet/Internet/WAIS/index.html' ]; dla ciebie w adresach URL { skopiuj cię do tar keepDirs; skopiuj u do zip keepDirs; } tar.zamknij(); zip.zamknij();

Skrypty usługi sieciowej SOAP

W czasach Judoscript usługa sieciowa SOAP była standardem branżowym dla zdalnych wywołań, zanim pojawił się RESTful API. Judoscript ułatwia korzystanie z usług sieciowych SOAP.

svc = wsdl::'http://coldrooster.com/dhtmldude/mathservice.asmx?WSDL'; println '3 + 2 = ', svc.Add(3, 2); println '3 - 2 = ', svc.Subtract(3, 2); println '3 * 2 = ', svc.Multiply(3, 2); println '3 / 2 = ', svc.Divide(3, 2);

Inne funkcje aplikacji

Judoscript ma wszelkiego rodzaju gadżety programistyczne, które obejmują większość codziennych zadań pracowników informatycznych, takich jak wykonywanie natywnych plików wykonywalnych systemu operacyjnego, wysyłanie e-maili, uruchamianie zaplanowanych zadań, dostęp do zasobów internetowych przez HTTP, SSH, SCP, uruchamianie własnego serwera HTTP, itp.

Możliwość tworzenia skryptów Microsoft COM otwiera drzwi do dokumentów Microsoft Office, wykorzystując ich DOM do uzyskiwania dostępu do zawartych w nich danych i manipulowania nimi oraz integracji z innymi magazynami i źródłami danych.

Realizacja

Gramatyka języka judoscript i jego parser są wykonywane za pomocą narzędzia JavaCC . Wiele skomplikowanych instrukcji specyficznych dla domeny stanowi własny podjęzyk, który gwarantuje osadzony podrzędny parser. Inne takie instrukcje i niektóre cukry składniowe wymagają natywnych metod w JavaCC . Ze względu na te złożoności parser bezpośrednio tworzy wewnętrzną reprezentację programu, która jest łatwo wykonywalna przez silnik języka.

Środowisko uruchomieniowe języka zawiera wiele bibliotek pomocniczych; niektóre pochodzą od stron trzecich, inne są opracowywane wewnętrznie.

Zobacz też

Linki zewnętrzne