- MAKS 2007 - http://news.com.com/2300-11397_3-6204037-1.html?tag=ne.gall.pg
- Spring dla Java oferuje także WS - http://www.springframework.org/download
- Tutorial - http://www.springframework.org/docs/MVC-step-by-step/Spring-MVC-step-by-step-Part-1.html
- Znany bloger VFP - http://www.craigberntson.com/blog/index.asp
- http://www.craigberntson.com/ - patrz na b. ciekawy artykuł "http://www.craigberntson.com/Articles/kb019.pdf"
- http://www.javaranch.com/journal.jsp
- http://www.vfpconversion.com/Article.aspx?quickid=0703112
- http://weblogs.foxite.com/bernardbout/archive/2007/06/20/4126.aspx
- http://www.code-magazine.com/article.aspx?quickid=0703112&page=5
- http://www.craigberntson.com/articles.htm
- http://www.rgoarchitects.com/nblog/default.aspx
- http://doughennig.blogspot.com/2007_06_01_archive.html - instlacja na Vista pakietu Sedna
- http://rickschummer.com/blog/
- http://alexfeldstein.blogspot.com/2007/03/10-things-software-devekopment-has.html
- http://www.rgoarchitects.com/nblog/default.aspx
- http://www.taylor.se/blog/2007/03/22/top-ten-things-ten-years-of-professional-software-development-has-taught-me/
- http://panopticoncentral.net/archive/2007/05/01/20383.aspx - analog Calvin Hsia
- http://techmagazine.ws/full-web-20-api-list/
- http://samples.gotdotnet.com/quickstart/howto/doc/readwrite.aspx
- Świetne How-To dla .NET - http://samples.gotdotnet.com/quickstart/howto/
- http://tssblog.techtarget.com/index.php/interoperability/mini-guide-rest-representational-state-transfer/?track=NL-461&ad=601137&Offer=TSNtssret821rmg&asrc=EM_NLN_2030482&uid=267959
- http://www.jamesbooth.com/ - VFP
- http://www.sweetpotatosoftware.com/SPSBlog/monthview.aspx?month=2006-06
- http://www.eggheadcafe.com/tutorials/aspnet/c6526574-cd2a-40e3-beac-fe3b10a1e694/design-patterns-for-net.aspx
- http://support.microsoft.com/vfp9 - support VFP 9
- http://www.markusegger.com/Articles/Index.aspx - Markus ciekawe o interop
- http://www.markusegger.com/Articles/Article.aspx?quickid=060044
- http://netcave.org/CategoryView,category,VFP.aspx
- http://blogs.msdn.com/vbteam/archive/2007/06.aspx
- http://www.west-wind.com/WebLog/posts/104449.aspx
- http://blogs.gotdotnet.com/bethmassi/archive/2007/05/02/interop-forms-toolkit-2-0-released.aspx
- http://samples.gotdotnet.com/quickstart/aspplus/default.aspx?url=/quickstart/aspplus/doc/securityoverview.aspx
piątek, sierpnia 24, 2007
Biblioteka czy Framework
Najpierw definicje:
- Biblioteka - jest zbiorem funkcji, które można wywołać w celu uzyskania nowej funkcjonalności (takie cegiełki do składania, jak się ktoś nimi posłuży tak mu wyjdzie). Inaczej, funkcje biblioteczne trzeba wołać z aplikacji (treści) by uzyskać formę.
- Framework - to coś więcej, to rozwiązanie szkieletowe, to gotowa forma, którą trzeba zapełnić treścią. Form może być skończona ilość, ale dzięki temu rozwiązania oparte o framework są do siebie podobne, niejako standardowe. Inaczej, a raczej odwrotnie, framework jest już gotową funkcjonalnością (przepływem logiki) ale bez treści, taką formę wypełnia się treścią poprzez wywołanie aplikacji. Taka zasada nosi nazwę "Odwróceniem sterowania" (Inversion of Control).
- korzystanie z podklas (subclassing)
- wprowadzanie zależności (dependency injection)
- wzorce metod (template methods)
- zamykanie (closure)
karate Kid - "Najlepszą obroną przed atakiem jest nie bycie tam"
- sprzętowy (ponieważ działa bezpośrednio na sprzęcie) XEN - firmy XenSource - niezależny od platformy sprzętowej silnik do wirtualizacji, który można wbudować do innych komponentów
- programowy (ponieważ działa w środowisku systemu operacyjnego, na razie tylko Linux) - KVM (Kernel Based Virtual Machine) - działa we wnętrzu jądra Linux w wersji 2.6.20, wykorzystuje wbudowane w architekturę procesorów instrukcje i rozszerzenia wirtualizacji (Intel VT or AMD-V). Ładuje się do jądra na żądanie i może uruchamiać maszyny wirtualne Linux lub Windows
Inne firmy tworzą produkty o nazwie RONS (Red Hat, Oracle, Novell, Sun) - implementując Xen (jako open-source project jest to możliwe) wg. własnych potrzeb do jądra ich odmian (dystrybucji) systemu Linux
Niedawno ukazało się opracowanie w linuxworld na temat dojrzałości płatnego produktu firmy Google - Google Apps Premier Edition (GAPE). Płatnego bo kosztuje 50$/rok. Zdaniem krytyków jest to niewypał (przynajmniej na razie) ponieważ nie ma mechanizmów zarządzanie kontami, prawami i dostępem co skazuje na niepowodzenie jego instalację w dużych firmach. Dla małych firm może to rozwiązanie być OK. Dodatkową nieufność budzi fakt dostępu do nieraz ważnych dokumentów poprzez internet (kwestia dostępności i bezpieczeństwa oraz standardów, regulacji prawnych i procesów danego przedsiębiorstwa). Ale z drugiej strony produkt Google przeciera ścieżki dla takich form narzędzi zwiększających produktywność i niejako sankcjonuje możliwość istnienia takich rozwiązań tym bardziej, że za Google poszły inne firmy Zoho, SalesForce i Microsoft.
Wygląda na to, że jest to pionierski ruch, przecierający ścieżki (podobnie jak przeglądarka Netscape).
czwartek, sierpnia 23, 2007
Pierwsza rzecz na którą należy zwrócić uwagę to wsparcie transakcyjności. Etapy rozwoju aplikacji a stylu AJAX-a:
- do wprowadzenia terminu AJAX - serwer miał skrypt w ASP, a każda strona zwierała skrypt w JS do wsparcia walidacji oraz "doładowywania" danych z serwera. Aplet w Java zapewniał komunikację z serwerem. Kłopoty z nim polegały na wymaganiu instalacji JVM.
- nadejście ery Ajax (początek 2005) - trzeba było przepisać. jedyna obawa to czy nadmiar kodu w JS po stronie klienta (przeglądarki) nie spowolni system. W ten sposób powstał framework w Java po stronie serwera - ThinWire (http://www.thinwire.com/) udostępniany na zasadzie LGPL
- Gartner tak porównuje rozwój aplikacji RIA:
- Poziom 1 - wzmocnienie istniejących aplikacji webowych o snippety
- Poziom 2 - możliwość dodawania widgetów w postacie komponentów UI (siatki lub drzewka)
- Poziom 3 - stosowanie wyspecjalizowanego frameworku do zawarcia logiki po stronie klienta
- Poziom 4 - wykorzystanie uniwersalnego frameworku typu RIA z ściśle powiązaną architekturą C/S
- Gartner twierdzi, że w 2010 około 60% nowych aplikacji będzie powstawała przy pomocy frameworku RIA
środa, sierpnia 22, 2007
PHP Frameworks
CakePHP - A structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility.
Symphony - Offers a “Ruby on Rails” like approach to web development. Symphony is well documented, simple to use and can be easily extended or modified.
Prado - An event-driven and component-based framework for Web application development in PHP 5.
Zend Framework - A complete framework to develop PHP 5 applications. It provides a repository of components that are actively supported.
Seagull Framework - Seagull is an object-oriented framework written in PHP that focuses on best practices, clean code and reusable components.
Java Frameworks
JavaServer Faces - JSF simplifies building of user interfaces by allowing you to assemble reusable UI components in a page. It has many tools, libraries and components.
Struts 2 - A simple action based framework that makes use of the Model2 approach to development.
Stripes – It is easy to learn and has excellent documentation. Development with Stripes does not require you to configure every last thing.
MyFaces - A new framework that makes use of the MVC paradigm. It is similar to Struts but with more features and concepts.
Tapestry - Organizes web applications development into component-based framework. Makes use of HTML templates and is design friendly.
JavaScript Frameworks
Prototype - A JavaScript framework that aims to ease development of dynamic web applications. It has a unique toolkit for class-driven development with an excellent Ajax library.
Rico - Rico is designed to build rich Internet applications. It provides visual style effects and animations in a very simple interface.
Dojo - Eases the rapid development of JavaScript and Ajax based applications. It also helps to add dynamic capabilities into your Web pages.
Yahoo! User Interface Library - A collection of controls and utilities written in JavaScript to build richly interactive web applications using DOM scripting, DHTML and Ajax.
qooxdoo – A framework that includes support for professional JavaScript development, a state-of-the-art GUI toolkit and high-level client-server communication.
CFML Frameworks
ColdSpring - ColdSpring makes the configuration and dependencies of ColdFusion components easier to manage.
Fusebox - Fusebox is a lightweight, high-performance web application framework for building applications that are easy to maintain and easily extensible.
Mach-II - An object-oriented MVC framework that can be extended through its filter and plug-in architecture.
Model-Glue - It makes the construction of Object-Oriented Web and Rich Internet Applications a straightforward process.
Perl Frameworks
Catalyst - A very flexible, powerful and fast MVC based framework for developing any type of web project in Perl.
Jifty - A Perl web framework to build web applications based on the DRY (“don’t repeat yourself”) principle.
CGI::Application - A mature, lightweight, flexible MVC framework for rapidly building web applications.
HTML::Mason - A web site development and delivery engine. With Mason, you can directly embed inline Perl codes with HTML templates.
Maypole - Perl framework for MCV-oriented applications designed to minimize coding requirements for creating database-backed applications.
Other Frameworks
Ajax Frameworks – A round-up of 50 Ajax toolkits and frameworks.
Python Frameworks – An overview of Python Web frameworks.
Flash & Actionscript Framework – This site has a comprehensive list of Flash and Actionscript frameworks and components.
Od wersji 6 języka programowania Java zmieniło się nazewnictwo wersji. Do wersji 5 (nazwa kodowa Tiger) było takie: Java Standard Edition 5.0 (JSE 5.0), Java Enterprise Edition 5.0 (J2EE 5.0). Od wersji 6 (nazwa kodowa Mustang) jest takie: Java SE 6.0, Java EE 6.0 i doszło Jave ME 6.0 (dla urządzeń mobilnych). Zmienił się także cykl wydawania nowych wersji, od teraz trwa on 18 miesięcy.
Zasoby o Pythonie:
- Nowy interpreter IPython
- Tłumaczenie książki marka Pilgrima - http://pl.wikibooks.org/wiki/Python - Dive into python
Problematyka technologii AJAX:
- Wdrożenie JSON jako medium wymiany danych (Douglas Crockford)
- Zastosowanie środowiska deweloperskiego APTANA IDE
- Nowa technologia jMaki
- JavaScript dzieki bibliotece prototype staje się b. ciekawy i upodabnia się do Ruby a składnię ma coraz bardziej podobną do Pythona, PHP raczej przypomina Perl lub C++
Ciekawe linki:
- http://blog.zabiello.com/pages/php
- http://blog.zabiello.com
- http://blog.zabiello.com/pages/dotnet
- http://www.gotapi.com/html
- moo.fx ma dodawanie zdarzeń poprzez klasy css
Głównym motorem rozwoju języka Java jest ciągle firma SUN (mimo otwarcia się na potrzeby społeczności open source). Tu powstają i są implementowane nie tylko nowe konstrukcje językowe ale też i implementacje nowych technologii. W szczególności spraw palących i drażliwych jak zachowanie stanu (persistance) oraz usługi sieciowe (web services - http://java.sun.com/webservices/).
Postawienie karty na technologii IBM jest OK, ale trzeba uważać na potencjalny konflikt między rozwiązaniami IBM i SUN. IBM jest podobny do MS, niecierpliwie chce wdrażać nowe technologie do Javy, podczas gdy SUN jest tym "hamulcowym". Dlatego IBM, sprytnie posługując sie wpływami w fundacji Eclipse, "przemyca" różne projekty.
Tak np. ma miejsce w przypadku WS - w nowej wersji Java 6 mamy już pełną (choć bardzo spóźnioną w czasie) implementacje WS-* i to jest dobre. Co zrobił IBM gdy potrzebował implementacji WS? Dodał ją do Websphere (swego serwera aplikacji), podobnie zrobiono również w fundacji Apache (projekt Axis).
Mamy więc dwa rozwiązanie tego samego problemu. Które lepsze? To zależy, z punktu widzenia programisty jest unifikacja - w języku Java ma już pełne wsparcie WS (a więc śmierć Aixs-a). Z punktu widzenia kierownictwa działu IT lepsze jest rozwiązanie drugie bazujące na implementacji WS w centralnym miejscu - serwerze internetowym Apache (wtedy programiści różnych języków mogą pisać aplikacje skierowane do jednej, wspólnej implementacji WS pod Apache - potrzebne są jedynie komponenty proxy do Apache dla danego języka w postaci mod_xxxx).
Implementacje WS w języku Java:
- JAX-WS - implementacja W3C stosu WS-*
- JAXB - powiązanie XML z obiektami w JavaBeans (API do powiązanie XML z obiektami w Javie)
- WSIT - współpraca z implementacją WS w MS .NET 3 poprzez wykorzystanie nowej własności Java 6 Mustang - annotacji (tu widzimy po raz pierwszy, mam nadzieję nie jedyny, wpływ C# na Java)
- JAXP - przetwarzanie XML niezależne od implementacji parsera XML
- XWSS - zapewnienie bezpieczeństwa XML i WS poprzez implementację zaleceń grupy OASIS WSS (web services security)
- możliwość stosowania języków dynamicznych (scripting) do: prototypownia lub (nawet) programowania (dla ludzi obytych z np. JS)
- lepsze wsparcie dla baz danych (implementacja JDBC 4.0 z lepszym wsparciem dla typów XML w kolumnach i dla BLOB-ów)
- dostęp do kompilatora w fazie uruchomienia (run-time) - oznacza to możliwość kompilacji w locie dowolnego tekstu do kodu wykonywalnego (podobnie jak eval w JavaScript lub execscript w VFP)