Replace classes in JUnit tests

February 11th, 2008

Few days ago a friend of mine showed me a nice project: StubOut. When you have strong dependencies between 2 classes in your project it is a very hard process to test each class separately. In this case StubOut makes a great job, it allows you replace one class with a mock class during the the test or to replace just some of the methods with mock methods.

Example :

package test;
public class A {

private B b=new B();

public int sum(int t){
return b.getInt()+t;
}

}

package test;
public class B {

public int getInt(){
return 10;
}

}

And the test case will be like this:

import us.blanshard.stubout.Stubber;
import us.blanshard.stubout.StubbingTestCase;

public class ATest extends StubbingTestCase{

@Override
public void beforeReloading() {
Stubber.replaceClass(”test.B”,Mock.class);
}

public void testSum() {
A a=new A();
assertEquals(1, a.sum(1));
}
}

package test;

public class Mock{

public int getInt(){
return 0;
}

}

Nice !!

In theory if each component is decoupled by an interface you will not use this library . But in reality ……………. :)

Check the site of the project for more details

Audio API

February 8th, 2008

Pentru amatorii de mashupuri muzicale am un link intersant:

Top 15 music APIs to power your next mashup

Java Web Browser

February 8th, 2008

If you want a pure Java web browser check this project: Lobo. Unlike The Flying Saucer Project, Lobo has support for HTML 4, Javascript and CSS2.

There are 2 things that I don’t like about it:

  • GPL license - if I want to use this library in a commercial project I’d better find another solution
  • why don’t these guys create a jnlp link to the browser? I don’t like to download code and to run it in command line.

Ora de muzica : ELO

February 7th, 2008

Astazi la ora de muzica vom asculta niste clasici ai rockului: Electric Light Orchestra

Mr.Blue Sky


Telephone line


Roll Over Beethoven


I Cant Get It Out Of My Head


Hold on Tight


Don’t Bring Me Down

Worf, verifica JConsola!

February 6th, 2008

Saptamana trecuta un client m-a rugat sa ii fac o analiza asupra consumului de memorie al aplicatziei la care lucram in cazul in care fisierele de intrare devin foarte mari (de ordinul zecilor de mega bytes).

Am cautat niste profilere free care sa se instaleze rapid fara prea multe trickuri dar din pacate nu prea am gasit. Apoi am incercat profiler-ul de la JBoss (aplicatzia rula pe un server de aplicatzii JBoss). Din pacate acest profiler m-a dezamagit rau de tot. Cu o interfatza total neintuitiva iar cand te prinzi care pe unde este te trezesti cu niste erori care te baga si mai rau in ceatza.

Apoi mi-am adus aminte de noile facilitatzi de monitorizare a masini virtuale (JVM) introduse in JDK 1.5. In JDK 1.5 baietzii de la SUN au introdus cateva MBean-uri (Managed Bean) pentru monitorizare si managementul JVM-ului. Ce este un MBean? Un MBean este un obiect Java care poate fi intrebat de sanatate. El expune o interfatza prin care o un alt obiect Java aflat in aceiasi masina virtuala sau in alta masina virtuala poate sa ii citeasca attributele, sa ii modifice atributele, sa ii apeleze metode sau sa fie notificat de catre MBean . Pentru mai multe detailli despre MBean-uri citeste aici.

MBean-urile pentru managementul si monitorizarea JVM-ului:

Aceste MBean-uri pot fi interogate cu orice client JMX (daca ai citit ce este un MBean stii ce este si un client JMX). Dar taticii de la SUN au creat un client JMX special pentru aceste MBeanuri: JConsole (sau pe romaneste JConsola :) ). Acest client vine cu orice JDK mai mare de 1.5. Deschidetzi o consola si tastazi ‘jconsole’(Asta in vazul cand executabilele din JDK se afla in PATH) si voila !.
Ca JConsole sa va poate accesa aplicatzia trebuie sa pornitzi JVM cu proprietatea com.sun.management.jmxremote activata.

JAVA_HOME/bin/java -Dcom.sun.management.jmxremote -jar test.jar

Pasii pentru monitorizare:

  1. Pornesti JVM-ul aplicatziei cu proprietatea com.sun.management.jmxremote activa.
  2. Pornesti JConsole . In momentul in care pornesti aplicatzia JConsole va detecta toate aplicatziile java care ruleaza local si va afisa o fereastra de dialog care iti permite sa selectatzi aplicatzia pe care o doresti sa o monitorizezi. Aplicatzia JConsole trebuie sa ruleze sub acelasi user sub care ruleza si aplicatzia target.

Aplicatzia JConsole poate sa ruleze si pe alta masina decat aplicatzia target . In cazul asta setarile sunt mai complicate.

screen11.png

Concluzie.
Aplicatzia JConsole nu este la fel de completa ca un profiler dar este perfecta pentru a afla cateva informatzii: cata memorie ocupa aplicatzia dv, deadlock-uri, ce thread-uri ruleaza la un moment dat, cate clase sunt incarcate in memorie etc. O alta deosebire este ca un profiler este mult mai invaziv in JVM decat acest soft de monitorizare. Un alt plus fatza de profiler este ca poate sa monitorizeze o aplicatzie in productzie (in cazul asta este recomandat ca aplicatzia JConsole sa ruleze pe alta masina).

Pentru mai multe detalii:
http://java.sun.com/j2se/1.5.0/docs/guide/management/agent.html

http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html

Sau cautatzi JConsole pe google.com

Why Microsoft Needs Yahoo: the Real Story

February 3rd, 2008

Read this to see the real story about Microsoft and Yahoo:

http://java.dzone.com/news/microsoft-and-yahoo-real-story

I like the last paragraph :)

My new toy: Linutop

February 3rd, 2008

Yesterday I received from France my new toy: Linutop. It is a small computer running from an USB key. When I say small I mean very small: 9.3 x 2.7 x 15 cm. It doesn’t have a harddisk and it is power by an AMD Geode LX processor.

The installation kit



The entire OS is stored on the USB key. The kit came with an optimized version of Xubuntu LiveCD, the light brother of the Ubuntu. It comes with a few applications: Firefox for browsing, Gaim for instant messaging and AbiWord for office stuff.
The hardware configuration is:

  • Processor: AMD Geode LX700 (x86)
  • Memory: 256 M
  • 4x USB 2.0 ports
  • Network: 10/100baseT Ethernet
  • Weight: 280 gr

The only thing that I don’t like about it is that the flash player doesn’t play flash movies very smooth. So you can not use this pc to play Youtube movies. But for browsing, chatting and write emails it is perfect. You can even use it as a home small server.

One of the things that that I like about it is that it doesn’t have a hard disk . So bye-bye movement parts. I can put this box in my pocket, I can put in my bag without any worry of breaking something.

I hope this week I can run my favorite OS JNode on this nice piece of hardware. The only problem is that the Linutop boots only from the USB and the JNode OS doesn’t have a good support for USB, but it boots very nice from the network. So I must put on the USB key the PXELinux to be able to boot from network. I hope also that the memory is enough to run JNode.

So I’ll be busy this week :)

Copiii si religia

February 2nd, 2008

Am citit de curand o stire intersanta intr-o revista:

“Silviu Prigoana nu vrea sa isi boteze fiul Maximus crestineste. El vrea ca fiul lui sa isi aleaga religia singur cand va creste mai mare. ”

Mi se pare o idee inteligenta sa lasi copiii sa isi aleaga singuri religia cand ajung la o anumita varsta. La fel cum ei isi aleg drumul in viatza, cum isi aleg meseria asa sa isi alega si idolii la care se inchina. In felul asta pot sa alega ce religie isi doresc sau pot sa devina atei. Este la libera lor alegere si nu sunt aruncati intr-o religie pe care nu o inteleg si pe care poate nici nu vor sa o urmeze.
Mi se pare absurd ca cineva sa faca alegeri pentru altcineva, mai ales alegeri care au consecintze toata viatza. La varsta aia nu stii ce este bun si ce este rau.
Sunt sigur ca mai marilor prelatzi din biserica (nu conteaza care biserica, toate sunt la fel) nu le cade bine o astfel de idee. Dar oare nu le-ar fi mai bine daca in jurul lor ar sta oameni care vor sa creada in credintza lor si nu oameni care stau acolo pentru ca parintzi lor au fost de o anumita religie. Banuiesc ca raspunsul este NU

Parcariile acoperite NU dauneaza grav sanatatzii

February 2nd, 2008

Dragi mei bucuresteni ,

Astazi vom vorbi despre parcari acoperite.
Parcarea acoperita este un o cladire in care potzi sa iti parchezi masina. Cand te duci la magazin cu masina iti parchezi masina in parcare (daca au). Cand te duci la cimitir sa iti vizitezi rudele tot in parcare iti parchezi masina (daca au). Asta este scopul parcarii: sa adaposteasca masini. In ea nu se dezleaga blesteme si nu se fac sedintze de spiritism. Deci sa nu va fie frica sa le folositzi. Nu va mananca si nu dauneaza grav sanatatzii.

Data viitoare cand va ducetzi sa va vizitatzi rudele (bunicul, bunica, catzelul, purcelul, etc) la cimitirul Belu (Eroii Revolutiei) putetzi sa va parcatzi masina in parcarea acoperita. Pentru asta a fost construita, ca sa parcatzi in ea si nu pe sosea, pe trotuar si pe linia de tramvai dezafectata. Daca parcatzi in parcarea acoperita o sa va simtzitzi mai bine, tensiunea arteriala va fi mai mica si rudele voastre din pamant nu vor asculta aceleasi tampenii pe care le spunetzi de fiecare data despre parcari: ca nu am gasit loc de parcare, ca mi-a zgariat un bou masina, ca parcarea nu este roz etc. Acum avetzi parcare, folositzi-o. Sau va deranjeza ca costa 2 lei ?

Daca nu ma credetzi pe mine ca aia este parcare va rog cititzi comunicatul firmei care o gestioneaza: link




Demis Roussos vine in Romania

February 2nd, 2008

Dupa cateva cautari pe net am aflat ca vine in Romania undeva prin primavara (cred ca prin luna Mai). Pana atunci sa ascultam niste melodii de pe vremea cand canta in grupul Aphrodite’s Child alaturi de Vangelis

Spring, summer, winter and fall

It’s Five O Clock