czwartek, 3 maja 2007

Dynamic Runtime Language

Microsoft postanowił znowu zaskoczyć w temacie Rich Internet Application. Od dawna wiadomo było, że platforma .NET nie współpracowała najlepiej z przeglądarkami internetowymi. Technologie typu "ClickOnce" przypominały za bardzo Java Start Web. Mało kto lubi uruchamiać przeglądarkę, żeby ściągać, instalować oraz uruchamiać programy. W dobie aplikacji internetowych ludzie oczekują że ich aplikacje będą obsługiwane przez przeglądarkę, że nie będą musieli ściągać i instalować oprogramowania. Google pokazało, że to jest możliwe. Adobe wyszło z założenia że wystarczy jeden format danych (SWF) i jeden odtwarzacz w przeglądarce (Flash Player) , żeby można było zaproponować programistom tworzenie aplikacji internetowych w przeglądarce. Następnie postanowiono dać możliwość tworzenia aplikacji komputerowych tak żeby wykorzystać możliwości jakie daje programowanie aplikacji internetowych. To jest Adobe Apollo. Microsoft zrozumiał że czas programowania w takich językach jak VB.NET czy C# aplikacji internetowych kończy się. Platforma .NET nie nadaje się do tworzenia klienckich aplikacji internetowych uruchamianych w przeglądarce (nikt nie robi plików .xbap). Trzeba było napisać plugin (wtyczkę), który pozwoli programistom .NET wykorzystać swoich możliwości w pisaniu aplikacji internetowych uruchamianych w przeglądarkach. Co to oznacza? Że plugin musi zawierać zmodyfikowany CLR który będzie nadawał się do obsługi skompilowanych zarządzalnych bibliotek DLL wykonywujących kod w przeglądarce internetowej. Ten zmodyfikowany CLR otrzymał nazwę Dynamic Runtime Language i został zaimplementowany w Silverlight 1.1 Koncepcja napisania czegoś takiego wyszła ze strony programistów IronPythona i innych języków dynamicznych (Jima Hugunina i Johna Lama oraz Tomasa Matouseka) . Obecnie kod źródłowy DRL znajduje sie w kodzie źródłowym IronPythona 2.0. Warto przeczytać wywiad z tymi programistami, aby zrozumieć czym jest ten "błysk".

SilverLight 1.1 może w przyszłości stać się głównym silnikiem renderującym dla nowej przeglądarki internetowej Microsoftu. Co zawiera nowego dla programistów? Przedsmak tego co będzie w .NET3.5.

  • Wsparcie dla kodu zarządzanego .NET
  • Wsparcie dla języków dynamicznych takich jak Managed JScript and Python
  • Nowy interfejs kontrolek użytkownika bazujących na WPF
  • Wbudowana obsługa wysokopoziomowych protokołów sieciowych takich jak REST, RSS, JSON, POX
  • Komunikacja ze strona internetowa na której jest kontrolka Silverlight poprzez DOM i AJAX
  • Zawiera kompletny zestaw klas bazowych znany z .NET
  • Wsparcie dla LINQ
Tych możliwości jest tak dużo, (wystarczy przejrzeć kody źródłowe aplikacji dla Silverlight) że można powiedzieć, że technologiom Adobe faktycznie przybył poważny konkurent. Tym poważniejszy, że nie zmusza programistów .NET do uczenia sie czegoś nowego jakim jest ActionScript 3. Myślę, że teraz przydałby się dla nich jakiś generator plików SWF współpracujący z technologiami .NET. Prawdopodobnie w najbliższym czasie DLR może zostać dodane do Mono ( i czekać jak programiści Microsoftu i Novella zrobią Silverlighta dla Linuxa)

Aby jeszcze bardziej zainteresować programistów swoja technologią Microsoft zaproponował im hosting (4GB) na multimedialne aplikacje internetowe wykorzystujące Silverlight.

Także jest też ciekawe jak będą programiści wybierać pisanie nowych silników dla języków skryptowych w oparciu o Tamarin czy w oparciu o Dynamic Runtime Language do swoich aplikacji. Obydwa oferują JIT i jak Garbage Collection. Coś mi to przypomina sytuację w której programiści języków dynamicznych mogą generować kod pośredni (zarządzalny) w Pythonie (Jython czy IronPython) bądź w Rubym (JRuby czy IronRuby). Czy będziemy mogli generować pliki SWF w Pythonie czy w Rubym? Albo co ciekawsze napisać interpreter składni Pythona czy Rubiego w AS3 tak jak zrobiono to z Lispem i Smaltalkiem. Czy w tym kierunku będą sie rozwijać aplikacje internetowe? Czy Flashowi i jego filmom .flv grozi faktyczna konkurencja ze strony Sileverlighta i jego plików wideo ?

Brak komentarzy: