wtorek, czerwca 26, 2007

  1. Każda aplikacja w tym i internetowa składa się z warstw:
    1. Klient lokalny:
      1. przeglądarka internetowa (niekompatybilne implementacje języka JavaScript, brak dostępu do zasobów lokalnych)
      2. inny kontener np. klient MS VS - niweluje te braki
      3. Bazujemy na języki JavaScript z jego rozszerzeniami obiektowymi (wychodzimy poza ramy podstawowe)
      4. Wymagane jest przyjęcie rozwiązań szkieletowych w zakresie GUI i operacji na DOM, ułatwiających tworzenie
    2. Serwer internetowy:
      1. Tradycyjny serwer internetowy oparty o rozszerzenie mod Apache (np. mod_python)
      2. Integracja platformy języka skryptowego np PHP z Apache (skompilowanie do Apache)
    3. Serwer aplikacji:
      1. Podział na wyspecjalizowane serwery aplikacyjne np. ZOPE
      2. Kontener dla uruchamiania języka JAVA zgodny ze specyfika J2EE: Tomcat (wzorcowy), WebSphere CE (CodeGlue), pełny WebSphere oraz wiele innych niezgodnych w szczegółach ze sobą implementacji BEA, JBOSS
      3. MS IIS 7.0
    4. Serwer bazodanowy:
      1. Oracle
      2. Informix
      3. DB2
  2. Warstwa
    C/s
    Web 1.0
    Web 1.0
    Web 2.0 AJAX
    Klient
    90%-100%
    0%
    5%
    85%
    Serwer internetowy

    100%
    5%
    5%
    Serwer aplikacyjny

    0%
    85%
    5%
    Serwer bazodanowy
    10%-0%
    0%
    5%%
    5%

  3. Wydaje się, że obecnie najbardziej rozwojowe są dwie hermetyczne platformy komercyjne (oferujące pełne, spójne i ciągle rozwijane technologie):
    1. Platforma .Net
    2. Platforma J2EE
  4. Wzorowane na J2EE ale znaczne bogatsze i rozbudowane środowisko .NET firmy MS oferuje pełna gamę narzędzi deweloperskich i środowisk wykonywalnych (serwerów) od urządzeń mobilnych aż po serwery korporacyjne. Wykorzystanie serwerów jest przeźroczyste dla programisty.
  5. MS Visual Studio 2005 jest wzorcem dla innych środowisk
  6. Wiele firm trzecich udostępnia (płatne oczywiście) ale o dużej jakości dodatki, które b. dobrze się integrują z klientem i serwerami MS (bo wiedzą jakie maja API) np. BO, CR.
  7. Światełko w tunelu - istnieje jednak interoperability między .NET i J2EE, chociażby poprzez WebServices
  8. Istnieje środowisko analogiczne po stronie Java (na etapie doganiania) ale jest rozczłonkowane:
    1. Chaos i brak stabilizacji
    2. Każda technologia jest innej firmy lub grupy deweloperów nic ich nie jednoczy poza chęcią wypromowania swej implementacji danego standardu
    3. Brak wspólnej platformy i jednolitego API
    4. Wykorzystuje się wiele projektów open-source ("pasożytnictwo" ponieważ na nich powstają wersje płatne), które dostosowuje się do własnych potrzeb (a to jest podatne na błędy i wymaga naprawdę dużej wiedzy)
    5. Mnogość dostępnych rozwiązań jest przeszkodą, przecież w końcu trzeba wybrać jakieś jedno rozwiązanie końcowe, dobrze gdy wybierzemy rozwiązanie "prawidłowe", które jest rozwijalne i powszechnie stosowane
    6. Niekompatybilność nawet między implementacją (rozszerzeniami) nawet EJB
    7. Tarcie wśród deweloperów jakie rozwiązanie jest jedynie słuszne np. Java Suna, IBM Java, czy Open Java
  9. Przekonanie o awaryjności i braku skalowalności rozwiązań serwerowych MS jest nieprawdziwe
  10. Środowisko MS jest tanie (koszt oprogramowania i sprzętu) i ma małe wymagania sprzętowe
  11. Elastyczność (agility). Można i należy budować aplikacje w środowisku heterogenicznym (już nawet baza nie musi być wspólna nie mówiąc o serwerach aplikacyjnych czy internetowych, wspólny musi być klient (czyli JavaScript) i mechanizm jednokrotnego logowania np. OpenID). Kryterium wyboru platformy musi być zgodne z wyborem klienta
  12. Możliwa i konieczna jest symbioza i wymienialność na poziomie serwerów: od wspólnego serwer baz danych.
  13. Przeciwieństwo podejścia hermetycznego - powstają aplikacje Web 2.0 gdzie część serwerowa jest mniej ważna, główny nacisk kładzie się na przetwarzaniu po stronie klienta
  14. Oparcie się na lokalnej przeglądarce internetowej (gruby klient w klasycznej architek.) jako kontenerze pozwala na mashup, czyli na konwergencję wielu platform serwerowych i przykrycie ich wspólną warstwą, nierozróżnialną przez klienta
  15. Dynamiczne języki mają się dobrze, mało kto pamięta, że MS pierwszy rozpoczął promocję języków skryptowych wprowadzając i rozwijając sławny Basic a potem Visual Basic. Wygląda na to, że teraz po latach wraca do swego pomysły. Na tegorocznym TechEd wprowadził temat DLR (dynamic language runtime obok działającej już CLR) platformy .NET Framework 3.5, w której poczesne miejsce będą miały właśnie te języki (od IronPython po IronRuby). Ukłon w stronę open-source - będą otwarte dla wszystkich chętnych. Z jednym zastrzeżeniem - serwisy SOA, tam mają królować jedynie CLR (wraz z WCF i serwerami w stylu BizTalk).
  16. Wg. MS języki dynamiczne mają swoje miejsce i to jest front-end aplikacji (tj. ASP.NET, Windows Forms, WPF, dynamic languages w śrosowisku ASP). Oznacza to funkcję wykorzystania i pobierania serwisów.(Na podstawie serwisu BetaNews: Microsoft's .NET Evangelist Spells Out Future Role for Dynamic Languages)
  17. Sun również widzi konieczność uproszczenia procesu wytwarzania oprogramowania poprzez wsparcie w środowisku Java języków dynamicznych (JavaScript, Python, Ruby). Java została otwarta dla środowiska open source, ale Sun ma tutaj wiodącą rolę.
  18. Kryzys głównych założeń J2EE, szczególnie EJB. Proponuje się lekkie EJB 3.0.
  19. Rozwój aplikacji WEB 2.0 (mashup) opartych o AJAX
  20. Google - oferuje wsparcie dla technologii mashup oraz narzędzia dla programistów w środowisku Java, .NET, Python, PHP. Google WebToolkit, Google Gears.
  21. Powstają bezpłatne rozwiązania szkieletowe tzw. framework np. Yahoo (głównie GUI), prototype (głównie niewizualne), dojo, rico. Dr.Dobbs - opis i ocena tych szkieletów. Jest wiele szkieletów specjalistycznych bazujących na tych rozwiązaniach.
  22. Demokracja jest dobra, ale musi ktoś rządzić.
  23. Powstaje wiele rozwiązań firm trzecich oferujących rozwiązania płatne np. Nitobi, Infragristic.
  24. IBM - przyjmuje postawę wyczekującą. Środowisko Eclipse (kupione przez IBM od firmy kanadyjskiej) zostało usamodzielnione (niezależne od IBM). Niesamowita ilość wtyczek, niezgodność wtyczek z wersjami brak koordynacji. IBM daje wolną rękę grupie Eclipse skupia się natomiast na rozwoju płatnego środowiska Rational po przejęciu tej firmy (formalna metodyka). Wielkie plany i projekty ale mało konkretów (czyli brak wersji produkcyjnych). Otwarta platforma Eclipse jest w fazie rozwoju, płatne rozwiązanie WSAD (z Rational) jest dopracowane
  25. Jython (JPython) - wersja 2.2 (ostatnia wersja 2.1 -była w 2001 roku). Numer wersji odzwierciedla wersję CPythona z której przejęto biblioteki. Uwaga przewiduje się wersję 3.0, która podobnie jak wersja CPythona nie będzie kompatybilna z poprzednimi wersjami.
  26. Głównym kontenerem do uruchamiania aplikacji jest ciągle przeglądarka internetowa. Rozwiązania szkieletowe skutecznie niwelują niezgodności między przeglądarkami.
  27. Istnieje możliwość wykonywania aplikacji internetowych w innych klientach lokalnych (obiekty XMLHTTP, oraz komponenty WebBrowser oparte o silniki IE lub FF) co ma swoje zalety (obsługa natywna lokalnych zasobów) i wady (konieczność instalacji - ale to nie jest aż taka przeszkoda dzięki platformie .NET)
  28. Głównym środowiskiem uruchamiania jest platforma Windows Client i nie wolno tego bagatelizować, część rozwiązań internetowych musi wykorzystywać wspierane przez MS technologie czyli głównie .NET.
  29. Coraz większy nacisk kładzie się na przetwarzanie w przeglądarce (co jest zgodne z AJAX)
  30. Ajax jest pojęciem szerokim, ma dwie strony implementacji
  31. Niezależnie od wyboru technologii krótko czy długoplanowej należy:
    1. Przeszkolić ponownie w zaawansowanym wykorzystaniu JavaScript w oparciu o obiektowość i szkielet
    2. Wybrać i zatwierdzić) metodologię tworzenia aplikacji (AJAX?)
    3. Wybrać i wdrożyć pomocne rozwiązania szkieletowe w zakresie obsługi GUI w przeglądarce oraz DOM
    4. Wybrać środowisku do tworzenia aplikacji w HTML (HateHTML, PSPad, MS VWD)
    5. Przeszkolić w zakresie narzędzi do testowania HTML (MS VWD, FireBug) oraz metodologii formalnych opartych na jUnit
    6. Wybrać i wdrożyć protokół przekazywania danych między warstwami: XML, JSON
    7. Rozpoznać środowisko Eclipse i wybrać niezbędne do pracy wtyczki oraz elementy z oferty Rational dla wsparcia środowiska Java
    8. Przeszkolić w Java
    9. Wybrać i zakupić komponenty serwerowe
  32. Należy obserwować rozwój aplikacji w Google, Yahoo, MS, Eclipse

Brak komentarzy: