pátek 27. února 2004

IBM naléhá na Sun, bude Java open source?

K otevřenému dopisu Erica Raymonda se přidala firma IBM, která naléhá na Sun, aby uvolnil Javu jako open source. Stanovisko IBM vyjádřil dopisem viceprezident Rob Smith. IBM nepřichází s prázdnou náručí a nabízí krom pomoci i technické prostředky(technical resources) a zdrojové kódy pro open source implementaci. Více informací přináší server ZDNet v článku IBM urges Sun to make Java open source.

Související články:

úterý 24. února 2004

Poznáváme DOM V. - Procházíme

V minulé části seriálu jsme se podívali na základní metody určené k získání časti dokumentu. V tomto díle se podíváme na rozhraní Node, které nám nabízí zajímavou sadu metod a atributů určenou k procházení dokumentu. Práce s dokumentem skrze toto rozhraní je velice jednoduchá pokud si dokument představíme jako stromovou strukturu spojených uzlů.

Objektová struktura části dokumentu

(plný náhled obrázku)

Rozhraní Node

atribut childNodes

Kolekce NodeList, která obsahuje všechny dceřiné uzly, jednoduchá ukázka nám je pomůže vypsat.

                  
      <ul id="fooList">
         <li>foo</li>
         <li>hoo</li>
         <li><a href="http://bar.com">bar</a></li>
      </ul>
             
      .
      .
      .
                        
      function printChild(){
          ulElement = document.getElementById("fooList"); 
          childNodes = ulElement.childNodes;
          for(foo = 0; foo < childNodes.length; foo++){
             document.write(childNodes[foo]);                        
          }
          document.writeln("Počet dětí:" + foo);
      }       
 

Podle použitého prohlížeče se Vám na obrazovku vypíše určitý počet objektů resp. dětí. Nyní zkusme ten samý příklad na stejných elementech ovšem bez oddělovače řádku.

                  
   <ul id="fooList"><li>foo</li><li>hoo</li>.....
 

Pokud jste použili pro první a druhý příklad prohlížeč Internet Explorer(6.0), pak počet dětí vždy odpovídal třem. V případě prohlížeče Mozilla(1.5) nebo Opera(7.0) byl počet dětí v prvním příkladu 7 a v druhém 3. Tento rozdíl se projevuje díky rozdílnému zpracování bílých znaků(white space), které jsou představovány konci řádků. Zatímco Mozilla a Opera interpretují konce řádků jako nové textové uzly, Internet Explorer je za textové uzly nepovažuje. Otázkou zůstává jaké chování považovat za správné ignorovat či neignorovat.

atribut firstChild

První dceřiný uzel aktuálního uzlu, pokud žádný takový neexistuje vrací se hodnota null.

atribut lastChild

Poslední dceřiný uzel aktuálního uzlu, pokud žádný takový neexistuje vrací se hodnota null.

atribut previousSibling

Nejbližší předchozí sesterský uzel aktuálního uzlu, pokud žádný takový neexistuje vrací se hodnota null.

atribut nextSibling

Nejbližší následující sesterský uzel aktuálního uzlu, pokud žádný takový neexistuje vrací se hodnota null.

atribut parentNode

Rodič tohoto uzlu. Všechny uzly kromě Attr, Document, DocumentFragment, Entity a Notation mohou mít rodiče. Pokud žádný takový neexistuje vrací jse hodnota null.

atribut attributes

NamedNodeMap(kolekce) obsahující atributy tohoto uzlu pokud je zároveň uzlem typu Element nebo hodnotu code>null.

atribut nodeName

Jméno tohoto uzlu, závisí na jeho typu.

atribut nodeValue

Hodnota tohoto uzlu, závisí na jeho typu.

atribut nodeType

Kód reprezentující uzel tohoto typu.

Hodnoty posledních čtyř atributů se odvijí od jejich typu. Abych uvedl tuto větu na pravou míru, je důležité si uvědomit fakt, že rozhraní Node je pouze základní rozhraní, které každý uzel dokumentu implementuje viz. obrázek. Všechny uzly ovšem implementují další rozhraní, které blíže specifikuje jejich povahu. Například uzly HTML dokumentu implementují rozhraní Element nebo rozhraní jenž je z něj odvozeno. Právě specifičtější rozhraní určuje onen typ uzlu. V konkrétním uzlu, který bude zároveň implementovat rozhraní Element bude atribut nodeName obsahovat jméno tagu a atribut nodeValue hodnotu null. Pokud budeme mít uzel s rozhraním Text bude nodeValue obsahovat hodnotu konstantu #text a nodeValue skutečný text daného uzlu.

Hodnoty atributů nodeName, nodeValue a attributes podle typu rozhraní
Rozhraní nodeName nodeValue attributes
Attr name of attribute value of attribute null
CDATASection #cdata-section content of the CDATA Section null
Comment #comment content of the comment null
Document #document null null
DocumentFragment #document-fragment null null
DocumentType document type name null null
Element tag name null NamedNodeMap
Entity entity name null null
EntityReference name of entity referenced null null
Notation notation name null null
ProcessingInstruction target entire content excluding the target null
Text #text content of the text node null

Výčet atributů a metod rozhraní Node je mnohem širší než je nezbytně nutné pro tento článek, případné zájemce bych odkázal přímo na specifikaci. Ještě přidávám jednoduchou ukázku atributů firstChild, lastChild, previousSibling, nextSibling a parentNode.

Související články

Zátěžové testy s programem Apache JMeter

Tak dlouho se chodí s džbánem... Tak nějak jsem již delší dobu přemýšlel o tom, že upozorním na nástroj Apache JMeter, který slouží k zátěžovým testům webových aplikací. Slušelo by se dodat, že nejenom webových aplikací, ale mnoha dalších zdrojů. Ucho se utrhlo respektive mě předběhl Tomucha na Jabloku ve spotu Realistický benchmark webové aplikace.

Pokud Vás straší mocné J v názvu programu tak vězte, že s JMetrem můžete vesele testovat jakékoliv serverové skripty(PHP, ASP, CGI ..), databázové dotazy, web services a mnoho dalších. Další výhodou je práce s vrácenými daty, která umožňuje například pronesení sessionid do dalších requestu nebo nastavení autentizačních údajů. Pro zobrazení naměřených hodnot nabízí JMeter slušnou paletu komponent, které si dle libosti můžete využít při vyhodnocování výsledků.

pondělí 23. února 2004

Sun, Java a open source

V posledních dnech bylo v javoské komunitě rušno kolem otevřeného dopisu Erica Raymonda(President Open Source Initiative), který žádá uvolnění Javy jako open source. Eric Raymond apeluje na Sun, aby nechal Javu jít a dostál vlastním slovům The open-source model is our friend. Autor argumentuje také tím, že v současnosti neni možné díky licenčnímu omezení ze Strany Sunu distribuovat Javu jako součást linuxových distribucí.

Mimo možnosti distribuce Javy jako součásti open source projektů poukazuje Eric Raymond na potenciální výhody, které nabízí open source komunita se svojí širokou základnou You have millions of potential allies out here in the open-source community who would love to become Java developers.

Pokud bych na problém nahlížel z pohledu Javy, pak mi přijde jako problém pouze distribuce. Java má v podobě Java Community Process prostředek k dalšímu rozšíření a vývoji platformy. Další pohled nabízí Rick Ross(JavaLobby) v článku No Sun Is An Island.

Ať je, byla nebo bude reakce a postoj jakákoliv, Ericu Raymondovi se podařilo vyvolat obecnou diskusi kolem Javy a jejího vztahu k firmě Sun a to je dobře.

Související články