Archivo

Entradas Etiquetadas ‘stupidzombie’

Es oficial: Kenai.com tiene 60 días más de vida

Martes, 2 de febrero de 2010
Comentarios desactivados

Bueno, ya lo habia comentado anteriormente pero ahora es oficial:

Hello fellow Project Administrators,

It’s with a sad heart that we have to announce that the Kenai.com domain will be shutdown as part of the consolidation of project hosting sites now that Sun is a wholly owned subsidiary of Oracle.

Project Kenai has always existed as two different things: Kenai the infrastructure, and Kenai the website (Kenai.com). While it has come time to close the domain of Kenai.com, the infrastructure (which is already used under NetBeans.org) will live on to support other domains in the future.

With this decision from Oracle to close the Kenai.com domain, it is now time for project owners to begin the process of migrating their repositories and content over to other locations. A few things to note as you begin this process:

* More then one forum thread is going on at this time discussing alternative sites for hosting projects; this one appears to be the most active:

http://kenai.com/projects/help/forums/general/topics/2406-Alternatives-for-Kenai-com-

* For Source repositories, SVNSync can be used for Subversion. Git, and Hg are pretty simple by nature to move.

* Wiki source code is available to all project admins and can be cut and paste into any other site that supports the Mediawiki syntax.

* For Issue Trackers and Forum content, we are looking at ways to make that content available, but we have nothing at this time in place. If you can come up with a way to move the content on your own, proceed as such. Please do not wait for us.

The website will be closed to the creation of new projects in the next week. The complete shutdown of the site and the removal of the domain will be completed in the next 60 days (April 2nd 2010). This should provide ample time for all projects to be moved to a new home of the project owners choice.

If you have a private project (only available to Sun internal projects) those projects will continue to exist. We will send information about how to access those in a separate notice.

Any public projects that remain after the 60 day limit (April 2nd 2010) will be removed when the site is turned off.

It has been an amazing ride, and a great pleasure to personally work with so many of you over the last year or so. From the entire Project Kenai Team I want to thank you for all of the feedback, criticisms, and support over our time together.

With much respect,
The Project Kenai Team

No me queda otra que buscarle un nuevo hogar a StupidZombie. ¿Alguien tiene sugerencias? :)

java, opensource , ,

Localización en Java (III): El caso de StupidZombie y JFileChooser

Lunes, 20 de julio de 2009
Comentarios desactivados

Bueno, resulta que otro desarollador de Argentina se topó con mi problema (del cual hablé en un articulo) de hace más de un mes en el foro de Sun y logró buscar el resto de las etiquetas para hacer que JFileChooser funcione en otro idioma (ya saben, el problema de localización):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Jose V Nunez Z,
 
You are watching the thread "Localization problems for JFileChooser in OSX", which was updated on Jul 19, 2009 9:34:41 PM by arg_slo:
 
<http ://forums.sun.com/thread.jspa?threadID=5393267>
 
For your convenience, the new message is included below:
--------------------------------------------------------------
Hello! Here the code I promised. In the JFileChooser.properties file I put this values:
 
FileChooser.fileNameLabelText=Nombre del archivo
FileChooser.homeFolderToolTipText=Directorio hogar
FileChooser.newFolderToolTipText=Nueva carpeta
FileChooser.listViewButtonToolTipTextlist=Ver lista
FileChooser.detailsViewButtonToolTipText=Detalles
FileChooser.newFolderButtonText=Nueva carpeta
FileChooser.lookInLabelText=Buscar en
FileChooser.filesOfTypeLabelText=Archivos de tipo
FileChooser.upFolderToolTipText=Subir un nivel
FileChooser.saveInLabelText=Guardar en
 
FileChooser.saveButtonText:Guardar
FileChooser.newFolderErrorSeparator::
FileChooser.other.newFolder:Carpeta nueva
FileChooser.acceptAllFileFilterText:Todos los archivos
FileChooser.directoryOpenButtonMnemonic:82
FileChooser.updateButtonToolTipText:Actualizar lista de directorios
FileChooser.cancelButtonText:Cancelar
FileChooser.directoryDescriptionText:Directorio
FileChooser.updateButtonMnemonic:84
FileChooser.cancelButtonMnemonic:67
FileChooser.newFolderErrorText:Error al crear una nueva carpeta
FileChooser.saveButtonMnemonic:71
FileChooser.cancelButtonToolTipText:Cuadro de diálogo para cancelar elector de archivo
FileChooser.directoryOpenButtonToolTipText:Abrir directorio seleccionado
FileChooser.helpButtonText:Ayuda
FileChooser.updateButtonText:Actualizar
FileChooser.helpButtonToolTipText:Ayuda elector de archivos
FileChooser.saveDialogTitleText:Guardar
FileChooser.openButtonToolTipText:Abrir archivo seleccionado
FileChooser.openButtonText:Abrir
FileChooser.fileSizeMegaBytes:{0} MB
FileChooser.fileSizeGigaBytes:{0} GB
FileChooser.win32.newFolder:Carpeta nueva
FileChooser.openButtonMnemonic:65
FileChooser.helpButtonMnemonic:89
FileChooser.fileSizeKiloBytes:{0} KB
FileChooser.openDialogTitleText:Abrir
FileChooser.fileDescriptionText:Archivo genérico
FileChooser.directoryOpenButtonText:Abrir
FileChooser.saveButtonToolTipText:Guardar archivo seleccionado
FileChooser.other.newFolder.subsequent:Carpeta nueva.{0}
FileChooser.win32.newFolder.subsequent:Carpeta nueva ({0})
 
 
and it works perfectly, all in spanish!
 
José from Bs As, Argentina
--------------------------------------------------------------
 
To respond to this post, please click the following link:
</http><http ://forums.sun.com/thread.jspa?messageID=10769968>
</http>

¡Genial!. Aún no he probado lo que el me envió pero parece razonable. Muchas gracias a José (tocayo tenia que ser) o como dicen por allá, gracias ¡Che!

java, opensource, programación , , , , , ,

Enviando Tweets desde Java usando Twitter4J: ¿Como proteger consumerKey and consumerSecret?

Sábado, 18 de julio de 2009
Comentarios desactivados

Bueno, mientras buscaba como agregar soporte para Facebook en StupidZombie, me conseguí con un problema interesante. Twitter4J requiere que definamos consumerKey y consumerSecret en el objeto Twitter en cada llamada.

Lo cual trae problemas, ya que si distribuimos esas claves entonces cualquiera puede hacerse pasar por nuestra aplicación (No es un problema en una aplicación web pero si en una de escritorio). El problema es peor si la aplicación es OpenSource porque entonces un Script-Kiddie puede hacer de las suyas sin mucho esfuerzo.

1
2
//twitter.setOAuthConsumer(consumerKey, consumerSecret);
accessToken = twitter.getOAuthAccessToken(token, tokenSecret, pin);

Lo que mas me preocupa es que autenticación de escritorio no funciona si no lo definimos. Por ejemplo, en el código que escribí la vez pasada esto es lo que ocurre si no incluimos la linea que esta comentada en el párrafo anterior:

1
2
3
Jul 18, 2009 10:18:49 PM com.kodegeek.blog.twitter.TwitterPing getAccessToken
INFO: Token=Ujq2pzpG7PwZVAJmGHjWrDiVzFz6wfmxzx9r85y7s TokenSecret=hBHVuOWdJPBe5r3iVXklSJuwawssjqoBslLHXhzlE Pin=4129706
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Neither user ID/password combination nor OAuth consumer key/secret combination supplied

Por ahora ando preguntándole al autor como resolver este asunto. La gente de Java API de FaceBook tiene una solución a este problema, lo hacen creando algo llamado ‘temporary secret

Actualización: El siguiente “hack” parece funcionar, pues el código de HttpClient revizar por NULL o cadenas de caracteres vacias:

1
2
3
		Twitter twitter = new Twitter();
		twitter.setOAuthConsumer(" ", " ");
		twitter.setOAuthAccessToken(accessToken);

internet, java, kodegeek, opensource, programación , , ,

StupidZombie y Java store: La historia un mes después

Miércoles, 15 de julio de 2009
Comentarios desactivados

StupidZombie @ Java Warehouse¿Que pasó un mes después?

Hace ya más de un mes me decidí a poner a StupidZombie en la tienda de Java de Sun (Java Warehouse). La idea era probar esta nueva tecnología de distribución de Sun mientras esta maduraba (al tiempo que me decidía si quería pagar los $50 dolares anuales por tener a StupidZombie allí). Sin embargo, después de ser aceptada esta se encuentra en modo de revisión desde hace un mes.

¡Un mes!. No estoy seguro que tan complicado es revisar la aplicación pero un mes para saber si la aplicación fué aceptada o cancelada me parece bastante. Por varias manera he intentado contactar a Sun para ver que ocurre (sobre todo si se trata de un problema de indole técnica) pero no he obtenido ninguna respuesta.

Es dificil saber como está progresando el beta de Java Warehouse, pero los foros tienen poca actividad (solamente 48 mensajes al momento de escribir esto). De verdad espero que las cosas tomen otro color, pero por los momentos las noticias no son alentadoras.

¡Vamos Sun (Oracle), todos están esperando que la tienda termine de despegar!

Actualización: Parece ser que Sun está trabajando duro en resolver ciertos problemas técnicos:

Hi Jose Vicente Nunez Zuleta,

Thank you for contacting us. We have an issue in the app wrapper; therefore, the approval process is delayed. We have done some testing with your app and is waiting for addressing the app wrapper issue. We will contact you once we have more update. Sorry about the delay.

Regards,
Roger

Amanecerá y veremos :)

java , , , ,

Como enviar Tweets desde Java usando Twitter4J

Domingo, 5 de julio de 2009

Una de las cosas que quiero hacer para la versión 1.1 de StupidZombie es agregarle soporte para actualizar el estado de Twitter cada vez que hacemos un ping. Como siempre es el asunto de construir algo desde cero o utilizar una herramienta existente y en el caso de StupidZombie lo que quiero es implementar la funcionalidad lo más rápido posible (por ejemplo, no tengo tiempo para seguir los cambios en el API de Twitter).

Después de buscar en la red me conseguí que Twitter4J es quizas la versión más madura para Java (recuerden, StupidZombie está escrito en ese lenguaje). Ni corto ni perezoso me puse a echar código y al final me decidí escribir una pequeña aplicación en Swing la cual hace lo siguiente:

  1. Autoriza la aplicación contra su cuenta de Twitter
  2. Obtiene un PIN y claves especiales de autorización (lo cual no es lo mismo que su usuario clave, a eso se le conoce como OAuth).
  3. Envia un mensaje (tweet) a su cuenta en Twitter desde la aplicación en Java

Nota, si usted es el desarrollador de la aplicación entonces lo primero que hay que hacer es registrar una aplicación nueva en Twitter (sus usuarios pueden saltarse este paso). Una vez terminado se ve como lo siguiente:

Registered applications
Aplicaciones registradas en Twitter

Una vez registrada debemos pasar “Consumer key” y “Consumer Secret” a nuestro código de Twitter4j, yo lo hago en el constructor:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
	private TwitterPing(String consumerKey, String consumerSecret) throws TwitterException {
		super("KodeGeek simple Twitter pinger");
		if (consumerKey == null) {
			throw new IllegalArgumentException("Consumer key is missing");
		}
		if (consumerSecret == null) {
			throw new IllegalArgumentException("Consumer secret is missing");
		}
		twitter = new Twitter();
		twitter.setOAuthConsumer(consumerKey, consumerSecret);
		requestToken = twitter.getOAuthRequestToken();
 
		setPreferredSize(new Dimension(600, 400));
 
	}

Desde la aplicación en Swing hacemos clic en el botón que dice “Authorize KodeGeek on Tweeter”. Si el soporte de Java para escritorio está activado entonces el navegador por omisión se arrancará e iremos a Twitter:

Allowing KodeGeek
Hora de autorizar a KodeGeek :)

El código que hace esto es super sencillo :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
	/**
	 * Send the user to the authorization webpage
	 * @throws Exception 
	 */
	private void sendUserToAuthUrl() throws Exception {
		final TwitterPing instance = this;
		log.log(Level.INFO, String.format("Got authorization URL: %s", requestToken.getAuthorizationURL()));
		if (Desktop.isDesktopSupported()) {
			Desktop.getDesktop().browse(new URI(requestToken.getAuthorizationURL()));
			log.info("Redirection was successfull.");
		} else {
			EventQueue.invokeLater(new Runnable() {
 
				@Override
				public void run() {
					JOptionPane.showMessageDialog(
							instance, 
							String.format("Cannot call default browser, please go to this URL instead: %s", requestToken.getAuthorizationURL()), 
							"Problems trying to send the user to default page", 
							JOptionPane.ERROR_MESSAGE);
				}
			});
		}
	}

Si la autorización es aceptada (como se ve a continuación):

KodeGeek twitter application
La autorización trabajó

Entonces podemos pedir el token de acceso usando el PIN obtenido en el paso anterior:

1
2
3
4
5
6
7
8
9
10
	/**
	 * Call this method only after the user has authorized the application
	 * @throws TwitterException 
	 */
	private void getAccessToken(final String pin) throws TwitterException {
		log.info(String.format("Got token: %s, Got secret: %s", requestToken.getToken(), requestToken.getTokenSecret()));
		accessToken = twitter.getOAuthAccessToken(requestToken, pin);
		if (accessToken != null)
			log.info(String.format("Got access token for user %s", accessToken.getScreenName()));
	}

Lo cual se ve así:

Ping number, required for desktop appsNúmero PIN para darle acceso a nuestro cliente a la cuenta de Twitter

Si todo va bien entonces podemos mostrar los 3 pedazos de la autorización necesarios para poder enviar un Tweet:

After geting the auth tokens
La aplicación tiene todo lo que necesita. Hora de enviar un tweet

Ya hacer el tweet es trivial con el siguiente pedazo de código:

1
2
3
4
5
6
7
8
9
10
	/**
	 * Send a tween using an existing AccessToken
	 * @param tweet The update to set
	 * @throws TwitterException If there is a problem updating the status
	 * @return The status of the tweet
	 */
	private Status sendTweet(final String tweet) throws TwitterException {
		twitter.setOAuthAccessToken(accessToken);
		return twitter.updateStatus(tweet);
	}

Al final, ¡exito!:

Success, tweet update
Como se ve nuestro mensaje en Twitter, enviado desde Java

El protocolo de Twitter soporta muchísimas cosas más. En particular le recomiendo que se lean la documentación relacionada para entender más como trabajan las cosas, en especial la autenticación usando OAth. Ahhh, y por supuesto aquí les dejo el código fuente completo para que se diviertan echando código.

Hasta la siguiente entrega, dentro de unas horas me sale ir a una parrillada :)

Veneblogs: , , , ,

Blogalaxia: , , , ,

To2Blogs: , , , ,

Technorati: , , , ,

Del.icio.us: , , , ,

java, kodegeek, opensource, programación , , , , , ,

Eclipse Galileo: Nueva versión, corriendola en OSX

Lunes, 29 de junio de 2009

stupidzombieUna captura vieja de pantalla de Eclipse Ganymede corriendo StupidZombie

Los lectores habituales de esta bitacora saben que yo uso Eclipse como editor para trabajar en el código de KodeGeek.com y StupidZombie. Al ver que ya tienen una versión (Galileo) para OSX decidí probarla de una vez, sobre todo con StupidZombie.

¿Y como se compara Galileo con la versión anterior, Ganimede?

Lo malo:

Bueno, primero que nada la importación de los proyectos en la versión anterior funcionó sin mucho problema (SVN no funcionó bien).

Una de las cosas que estaba esperando es el análisis de memoria. Este tipo de cosas son super útiles, Netbeans cuenta con visualvm y otras herramientas como Yourkit hacen un trabajo tremendo (Yourkit se puede integrar con Eclipse también). Pero el hecho de que Eclipse la integre de una vez es super cómodo y conveniente.

Sin embargo la instalación es un poco tediosa. Y al final me topé con que OSX no es soportado :(

Otra cosa irritante: El cliente de Subversion que viene con Eclipse no funcionó. Parece ser que requiere otros clientes nativos los cuales no están en OSX:

*** Validate Repository Location
Selected SVN connector library is not available or cannot be loaded.
If you selected native JavaHL connector, please check if binaries are available or install and select pure Java Subversion connector from the plug-in connectors update site.
If connectors already installed then you can change the selected one at: Window->Preferences->Team->SVN->SVN Client.
*** Error (took 00:00.007)

Sin embargo el menú ‘Window->Preferences->Team->SVN->SVN Client.’ no existe, lo cual es muy irritante. Al final instalé el cliente de Tigris.org y logré recuperar mi proyectos en SVN (En este caso StupidZombie). Todo bien después de eso

Eclipse Galileo corriendo StupidZombie

Lo bueno:

¿Que otras cosas interesantes noté? Bueno, los detalles pequeños siempre cuentan:

  • Puedo decir también que esta versión es más rápida a la hora de compilar el código en Java.
  • La completación de código (Ctrl+Space) es más rápida y si incluyes la clase con el paquete entonces la selección es más acertada
  • La instalación de plugins siendo siendo super fácil, incluso cuando hay problemas estos son fáciles de resolver
  • La ejecución de código de Ruby desde Eclipse es genial. De verdad es una adición genial al editor

Lo feo:

Sin embargo hay cosas que quisiera que mejoraran (no muchas, gracias a Dios):

  • Eclipse aún no incluye por omisión un editor de interfaces gráficas como Netbeans (La opción es el proyecto Visual Editor)
  • Eclipse debería ser más inteligente cuando se instalan plugins y las dependencias básicas no están

¿Me mudaría a Netbeans? No lo creo. Conozco a Eclipse muy bien, cada versión es más rápida y con más funcionalidad y los problemas que se presentan son fáciles de resolver. En un mundo en donde la productividad vale oro esta es una de las herramientas que quiero tener al lado, además de Ant :).

Veneblogs: , , ,

Blogalaxia: , , ,

To2Blogs: , , ,

Technorati: , , ,

Del.icio.us: , , ,

java , , ,

Haciendo que Java se vea más nativo en OSX: El caso de StupidZombie

Lunes, 22 de junio de 2009
Comentarios desactivados

Bueno, ya la parte de la localización de StupidZombie está casi resuelta, asi que ahora me sale integrarlo mejor con OSX. Linux y Windows son má llevaderos, pero OSX tiene su forma neurotica de hacer las cosas :)

java , , ,

Localización en Java (II): El caso de StupidZombie

Domingo, 21 de junio de 2009

StupidZombie localization issues¿Qué tiene de malo la imagen?. Pista: ¡Llámame p’atras!

Bueno, ya casi está listo. Pero cuando digo ya casi es porque aún tengo componentes de Swing los cuales no se portan muy bien en cuanto le cambio el lenguaje y la región al programa.

¿Qué hacer? Parece que es una cucaracha común, en especial con JFileChooser:

Hay soluciones, voy a probarlas y después les digo como me fué. Sin embargo con Swing es irritante ver como la promesa de Java “Run anywhere” se quiebra un poquito ;)

Veneblogs: , , , , ,

Blogalaxia: , , , , ,

To2Blogs: , , , , ,

Technorati: , , , , ,

Del.icio.us: , , , , ,

java , , , , ,

Comienza la cuenta regresiva para StupidZombie 1.1

Sábado, 13 de junio de 2009
Comentarios desactivados

Ya comenzó la cuenta regresiva para StupidZombie 1.1. Hoy cree las ‘ramas’ en SubVersion, hice pequeños cambios en la compilación del proyecto, y actualice las librerías de terceros (con la ganancia grátis en velocidad del Pinger de XML-RPC).

Pero lo más importante es que ya tengo la lista completa de tareas para la versión 1.1.

Veneblogs: , , ,

Blogalaxia: , , ,

To2Blogs: , , ,

Technorati: , , ,

Del.icio.us: , , ,

java ,

Usando Visualvm en StupidZombie con Eclipse y OSX: Resultados mixtos

Jueves, 11 de junio de 2009
Comentarios desactivados
StupidZombie memory profile - ping

StupidZombie memory profile - ping

Hoy me decidí a probar VisualVM de Sun (O debería decir Oracle). Bajarselo del sitio web es un paseo y la instalación es trivial (descomprimir, correr y ya). La aplicación a la cual estudié no es más que StupidZombie.

(Si usted tiene Windows entonces quizas no necesite bajarselo ya que viene con la última máquina virtual de Java de Sun).

Correr VisualVM es bastante sencillo, sólo tuve que:

  1. Ejecutar a StupidZombie
  2. Ejecutar a VisualVM (haciendo click en su icono en el directorio bin en donde quedó instalado).

Lo primero que hice fué ver cuanta memoria se estaba comiendo StupidZombie; Una aplicación tan sencilla debería ser liviana y me encontré con que usa sólo 20MB en OSX (Una ridiculez considerando lo que pesan ciertas aplicaciones hoy en día). Sin embargo me soprendió ver que cuando StupidZombie hay más de 5000 mil clases de Java en memoria, (¿porqué tanta basura?).

Esto me hace pensar que es hora de poner a dieta a la aplicación; Por ello me decidí hacer un perfil del uso de memoria (memory profile) y lo dejé corriendo un rato mientras hacia Pings a varios directorios y escribia etiquetas con el generador de etiquetas automático:

StupidZombie and VisualVM

StupidZombie and VisualVM

Mucha creación de arreglos de caracteres. No es soprendente ya que StupidZombie hace mucho “procesamiento” de cadenas de texto, proveniente de los directorios. Sin embargo me gustaría como se porta si lo corro paso a paso desde Eclipse (en mi caso no utilizo NetBeans donde la integración es más natural).

¿Y que sabemos del uso del procesador (CPU)? Bueno, siempre que intentaba cambiar a ese modo la aplicación corria bien un rato y luego se moria, dejandome a un proceso zombie en la máquina (que ironia StupidZombie es ahora un verdadero Zombie :)):

Nunca pude medir el desempeño del procesador

Nunca pude medir el desempeño del procesador

Por ahora mi opinión de la herramienta es mixta. Si bien es genial que la máquina virtual de Java venga una herramienta de este calibre es también decepcionante que no se pueda medir el desempeño del procesador en OSX.

¿Pero es justa la comparación? Es decir, ¿como se mide en OSX con otras herramientas similares?

Bueno, yo tengo buenas experiencias en mi trabajo con YourKit. Resulta que ellos ofrecen una licencia OpenSource (aunque también tienen una licencia de evaluación de 15 días), así que también me baje esta versión de la herramienta y la probé (primero claro, hubo que hacer ciertos pasos en OSX antes de poder utilizar la herramienta, nada del otro mundo):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
auyan:bin josevnz$ export DYLD_LIBRARY_PATH=/Users/josevnz/Desktop/YourKit_Java_Profiler_8.0.9.app/bin/mac:$DYLD_LIBRARY_PATH
auyan:bin josevnz$ java -agentlib:yjpagent=helpYourKit Java Profiler 8.0.9 JVMTI agent usage: -agentlib:yjpagent=[help]|[option, ...]
 
Option             Description
------------------ ----------------------------------------
port=value       port to listen on (1-65535, by default any free port is chosen)
listen=ip:port same as 'port', but bind agent socket to particular IP only
onlylocal          allow only local connections to profiled application
dir=custom dir   directory where snapshots are created (by default $user home/Snapshots)
telemetrylimit=$n limit telemetry buffer capacity to N hours (approximately)
sampling           startup with CPU sampling
tracing            startup with CPU tracing
                   (cannot be used together with 'disablecounts')
noj2ee             do not perform J2EE high level profiling
                   (use only in combination with 'sampling' or 'tracing')
alloceach=$n      startup with object allocation recording: record each N-th allocation;
                   can be used together with 'allocsizelimit';
                   cannot be used together with 'disablealloc'
allocsizelimit=$b startup with object allocation recording: record objects with size >= B bytes
                   can be used together with 'alloceach';
                   cannot be used together with 'disablealloc'
monitors           startup with monitor usage profiling
usedmem=$percent  capture memory snapshot automatically when used heap memory
                   reaches the threshold
onexit=memory      always capture memory snapshot on exit
onexit=snapshot    always capture performance snapshot on exit (i.e. without heap)
disablealloc       do not instrument bytecode for object allocation recording
disablecounts      do not instrument bytecode for CPU tracing
disablej2ee        do not instrument bytecode for J2EE profiling
disablestacktelemetry
                   do not collect thread stack and status information
quiet              suppress diagnostic messages
 
Please find detailed description in the Help section "Startup options":
http://www.yourkit.com/docs/80/help/additional_agent_options.jsp
 
Examples:
java -agentlib:yjpagent FooClass
java -agentlib:yjpagent=alloceach=10,allocsizelimit=1000000,dir=c:\MySnapshots FooClass
java -agentlib:yjpagent=usedmem=70 FooClass

Bueno, funciona. Ahora corremos a StupidZombie con las opciones de YourKit y la cosa se ve más o menos así:

YourKit profiling StupidZombie

YourKit profiling StupidZombie

1
2
3
4
5
6
auyan:bin josevnz$ java -agentlib:yjpagent -jar ~/Documents/stupidzombie/kenai/dist/StupidZombie.jar 
[YourKit Java Profiler 8.0.9] JVMTI version 3001016a; 1.6.0_07-b06-57; Apple Inc.; mixed mode, sharing; Mac OS X; 64-bit JVM
[YourKit Java Profiler 8.0.9] Profiler agent is listening on port 10001...
[YourKit Java Profiler 8.0.9] *** HINT ***: To get profiling results, connect to the application from the profiler UI
Jun 11, 2009 11:15:24 PM com.stupidzombie.gui.StupidZombieGui main
INFO: Starting...

Hice un montón de pruebas y debo decir que YourKit es una opción mucho más madura que VisualVM. Solo me queda ver si la gente de YourKit me dá una licencia OpenSource para seguirla utilizando en StupidZombie por más de 15 días.

¿Y ustedes, que utilizan para medir el desempeño de sus aplicaciones?

comics, internet, java, kodegeek, linux, opensource, programación, ruby , , ,

%d personas les gusta esto: