Lenguaje de programación Java

Bueno, para que me vayan conociendo un poco mejor, una de mis grandes pasiones lo es programar en Java, soy natural de la ciudad de Mexico y esto que voy a escribir proximamente “cojanlo como algo escrito de manera constructiva”.

Hace unos meses atrás empecé a lo que llame un proyecto piloto “de prueba“. Hice una aplicación en Java. Para esté proyecto tenia que escoger una aplicación de la vida real que no fuera muy difícil de hacer pero que a la misma vez, me diera toda la experiencia de todo un ISV (Independent Software Vendor), que me diera toda la experiencia de crear mí propio programa y de ponerlo a la venta al principio por la internet como hacen muchos de los autores de software que admiro (Getright, PowerArchiver, Mirc). Entonces escogí crear un manejador de contraseñas (password manager), porque pensé que no me tomaría mucho tiempo y que a la misma vez me daría todo lo que necesitaba en habilidades y no quedaria ¿nada mal para mí resume verdad?, aunque al final el programa no se vendiera o lo tuviera que poner en dominio público.

*****************FIRST ROUND*******************
Mí primera queja hacia el lenguaje es que no puedo darle a mis usuarios un ejecutable menor de 14 megabits. ¿POR QUE? ¿COMO? ¿NO PUEDE SER? Mientras las mayorías de los internautas están acostumbrados a bajar programas del internet que no pasen los 6 MB. Yo hasta lo menos que he llegado a poner mí ejecutable es hasta los 16 MB. Esta situación me pone en una GRAN DESVENTAJA ante cualquier programa que sea creado en C++ y yo quisiera competir en contra por que mí competencia podria llegar hacia mas usuarios de los que yo podria(piensa en 56 k , linea telefonica). Ademas de ponerme en desventaja tambien me irrita.

Me explico el de por qué tome la decisión de pegar “Bundle” mí ejecutable jar con la maquina virtual de java 6 y los menos que pude hacer es 14 MB.

Primero si el usuario no tiene ninguna maquina virtual de java, pues como quiera tendría que bajarla.

Segundo si el usuario tiene una maquina virtual de Java, lo más seguro tenga la 1.5 en estos momentos, pero como a mí me gusta estar a la vanguardia pues utilice clases nueva que solo se encuentran en Java 6 y que me gustan como funcionan y como trabajan.
Entonces mí programa no puede correr con la JRE 1.5 y nuevamente el usuario tendría que bajar la maquina virtual de java 6.

Tercero el usuario tiene la maquina virtual de Java 6 instalada, pero como el “release” de Java 6 fue bien cerquita a mí programa, pues lo más seguro es que el usuario no tenga Java 6 en un 93% de los casos por lo menos.

Cuarto el usuario promedia te preguntaría ¿Y QUE ES JAVA? y cuando la le empezaras ha decir lo que es Java, te dirian , no me importa solo pon el programa ha correr.

POR LO QUE, POR LOGICA ME MEO OBLIGADO HA PEGARLA, a MI EJECUTABLE JAR.

¿Pero cuál es el problema? El problema es que la maquina virtual de Java 6 tiene un tamaño aprox de 13.16MB y que la licencia de Java Prohíbe TERMINANATEMENTE, modificar la maquina virtual y distribuirla modificada. ¿Por qué digo modificada? por que la maquina virtual trae consigo clases o cosas que no todos los programas escritos en Java utilizarían necesariamente pero que le añade tamaño al JRE.


Por ejemplo mí programa no utiliza en ningún momento la parte MIDI o utilizaría en ningún momento nada que tenga que ver con la parte Applet de java, o con tal vez con las clases que tengan que ver con Aplicaciones MDI(Multiple Document Interface) . Todas esas cosas de mas se las prodria quitar al JRE y mí programa seguiria corriendo bien.Pero si les quito esas cosas a la maquina virtual de Java y la distribuyo de esa forma haciendo que el tamaño de la maquina virutal baje, estaría violando el EULA, de Sun Microsystem.

Y estoy hablando de utilizar esta makina virtual como privada, no como compartida.

Privada-seria que solo mí programa sea el que corra en ella.
Compartida – seria que cualquier programa en Java, en la makina del usuario, corra bajo ella.


Después de todo, después de terminar mí aplicación piloto y terminar su WEB, (GRACIAS A DIOS QUE FUE PILOTO) me di de cuenta que existieron algo llamado GetrightJ y ICQ for Java.

Despues de todo Parece ser no ser el único que ha dicho…
Java es bueno pero NO SIRVE.

En lo que parece ser bueno Java es que tiene ha personas trabajando que se han dado de cuenta de esta situación del tamaño del JRE y su problema. Ethan o Chet.
En lo que parecer no servir es que se tiene que esperar por lo menos un año mas para ver que estas ideas sean realizadas. ¿Acaso estos cabrones estan mandando un cohete ala Marte?

Pero no se vallan por que esta pelea no ha terminado apenas comienza y puede que llegue al round 13.

**********Segundo Round*****************

“DOBLEN LAS APUESTAS MI GENTE”

Una de las cualidades “poderosas de Java” es que un programa escrito Java puede correr en cualquier plataforma ¿verdad? Diantre pero se me olvido, la versión de Java para las plataformas MAC, está a cargo de Apple.😦 En la página de descarga de Java, no se encuentra, una descarga para Mac. Lo único que se encuentra en un link, diciendo “download Java from apple site” y cuando aprietas el link te lleva a una página dónde vas a descargar la versión 5 de Java, además de decir que la descarga en esta ocasión de de 83 MB.

Java a promocionado la famosa frase Write once, run anywhere“.
Pero yo diría que escribí una sola vez, y me he tenido que joder.

Ni si quiera me he tomado la molestia de correr mí ejecutable .jar en alguna plataforma MAC. ¡NI SIQUIERAQ! ¡NI SIQUIERA!


Y sí uno se pone ha pensar bien entonces el “release” de Java 6 no ha sido a finales del 2006, el release de Java 6 todavía no se ha dado y puede que se tenga que esperar hasta finales del 2007, 26 de Octubre-2007, para que la versión 6 de java para MAC, sea disponible.

Claramente y nuevamente, esta situación me pone en desventaja, porque no le puedo llegar a la cantidad de usuarios que yo quisiera. Ya escribi una vez, pero no he podido correr donde quiera.

¿Diganme ustedes? Los del equipo de Java. No se supone que el trato era , que los programas correrian un poco mas lentos(solo un poco) ¿Pero se ejecutarian en cualquier plataforma?

La parte en que Java sirve es que ha tenido a unas personas de su equipo de trabajo que se han dado cuenta de este problema. John O’ Conner’s.

*******Round number 3, 4 y 5***************


“Pónganseme las botas que voy a pegar fuerte y voy a ser bueno a la vez”

Muchos me dirían, estás hablando mierda, un programa como limewire está siendo exitoso, está escrito en Java, si tú no tienes éxito ese es tu problema tonto. Si no has vendido una sola copia de tu programa, “el problema no es el caballo, es el jockey”, morón.

Yo les diría (aunque muchos no estén de acuerdo conmigo) que la única razón para que limewire esté teniendo éxito, es que la gente hace lo que sea por música y pornografía gratis, y que tampoco me hace falta el dinero de vender algun software , pues tengo un buen trabajo.

Pudiera escribir un P2P en Python, en Cobol, en SmallTalk, en Ada, en Fortran, y la gente buscaría la forma en que su programa funcione a cualquier costo, después que la pornografía y música gratis estén presentes…

El usuario promedio, y digo el usuario promedio (99.8%) espera que cuando uno le de doble click en el mouse el programa se ejecute ¿Verdad? ¿Verdad? ¿Verdad?

Pues me tarde 2 semanas averiguando el de cómo hacer que mí ejecutable .jar se pudiera convertir en un .exe y que cuando el usuario le diera un doble click se pudiera ejecutar sin ningún problema.

Primero utilice el Inno Setup Installer, utilice la compresión lzma/ultra y utilice Launch4J, (tuve que aprender hasta modificar los scripts que crea el Inno).

Sí alguien va a utilizar el Inno , pongan atención en la parte en que pongo “WorkingDir” pues de no hacerlo se les crearia un pequeño bug, en algunas maquinas de Windows.

[Icons]
Name: “{group}\Trujillo Password Manager”; Filename: “{app}\TrujilloPasswordManager.exe”; WorkingDir: {app}
Name: “{group}\{cm:ProgramOnTheWeb,Trujillo Password Manager}”; Filename: “http://www.trujillopasswordmanager.com/”; WorkingDir: {app}
Name: “{group}\{cm:UninstallProgram,Trujillo Password Manager}”; Filename: “{uninstallexe}”; WorkingDir: {app}
Name: “{commondesktop}\Trujillo Password Manager”; Filename: “{app}\TrujilloPasswordManager.exe”; WorkingDir: {app}; Tasks: desktopicon
Name: “{userappdata}\Microsoft\Internet Explorer\Quick Launch\Trujillo Password Manager”; Filename: “{app}\TrujilloPasswordManager.exe”; WorkingDir: {app}; Tasks: quicklaunchicon

[Run]
Filename: {app}\classes.BAT; Flags: skipifdoesntexist runhidden
Filename: “{app}\TrujilloPasswordManager.exe”; Description: “{cm:LaunchProgram,Trujillo Password Manager}”; Flags: nowait postinstall skipifsilent

Realmente mí punto aquí es, que estas 2 semanas que me las pude haber ahorrado escribiendo en C WIN32API o MFC C++, las he perdido escribeindo por utilizar Java. Y aunque Java tiene unas cosas que te ayudan a programar más rápido, como lo es el manejo automatico de memoria, pues a la misma vez tiene otras cosas que te atrasan.
¿ Entonces cual es el punto de usar Java para crear una aplicación de escritorio?¿ Alguna vez te dijeron, que lo barato sale caro?

Ósea ahora mismo me encuentro en una situación en qué no puedo ejecutar mí aplicación en cualquier plataforma por qué fue desarrolladla en Java 6 y tendría que esperar un año más para que mí aplicación fuera propiamente ejecutada en una MAC y a la misma vez creyendo que podía desarrollar mí aplicación en Java más rápido porque no tenía que bregar con la memoria de la PC, me salió en tiro por la culata, POR QUE aunque no tuve que bregar con la memoria de de la PC , tuve que bregar haciendo que TPM pudiera ser ejecutado solo con un doble click. Lo que a finales de cuenta no he tenido el avance que esperaba.

Yo estoy consciente que ningún lenguaje va a ser perfecto. Pero me siento en esta situación como sí me hubiesen robado, como sí me hubiesen cogido de pendejo, y les digo algo, no me tropiezo 2 veces con la misma piedra.

El problema es que….
1) PRIMERO NO TODOS LOS .JAR son ejecutables
2) SEGUNDO SE ME HIZO UN PEO (PERO UN PEO VERDADERO) PARA PODER HACER QUE Mí .JAR fuera ejecutable con un doble click.
3) TERCERO PARA LOS PROGRAMAS QUE UTILIZAN MAS DE UN .JAR ALA MISMA VEZ se les ha creado otro peo atorado. Chequéense los comentarios de este
blog.
4) CUARTO, sí hay algo de verdad en java, es que con cada versión nueva del JRE que Sun saca ,los programas se ejecutan más rápido, y esto es algo de lo que puedo dar fe. Pero cuál es el punto de sacar una maquina virtual 6, cuando realmente no se puede utilizar como es propiamente debida.

El punto de desarrollar mí programa en Java 6 fueron estos ‘gray rect’ , sorting and filtering tables , arreglos en el Drag and Drop , soporte de texto para LCD , un programa que pudiera correr mas rápido , y un sinnúmero de arreglos.

Recuerden mí gente, que no estoy diciendo que Java es una porquería (por que parece ser que le esta yendo muy bien en los teléfonos móviles), lo que estoy diciendo es que Java es bueno, pero no sirve.

Lo bueno de esto yo diria que es que hay personas en Sun que estan pensado bien correctamente y estan arreglando las cosas.

Lo que no sirve seria que estos arreglos , han conllevado un tiempo, tremendamente exagerado , y que Java “POR AHORA” ha sido mas promoción que verdad.

*****ROUND 6********

mmmmmmmmmmmmm, dejame ver , mmmmm dejame ver

No quiero que me mal interpreten, pero miren este enlace y analicemos un poco.
Este rfe fue llenado en 1999, ya van 8 años.

Cuando estaba haciendo mí aplicación piloto, me di de cuenta como es obvio que tenía que tener un poco de documentación para mis usuarios. Adivinen…. en Java no se puede hacer una documentación como yo quisiera, por que JEditorPane está más obsoleto que el mismo MetalLookAndFeel. Esto me causa risa y ala misma vez me causa irritación.

Creo que en esta, se les fue la mano ¿verdad? ¿8 años y no se ha podido hacer nada?
Me quedo un poco mudo, no sé ni que decir.

Este otro problemita lleva 8 años, sin resolverse, esto quiere decir que si encuentro un problema hoy mismo ¿puede que tarde 9 años en resolverse?

El navegador de Java , descontinuado…

Creo que no necesito explicar bie mí punto.

******ROUND 6 – 12**********

Quiero que alguien me diga, cual es el punto principal de utilizar Java:

1) Tu programa puede correr en todas las plataformas, Mac, Linux, Windows, etc. Potencialmente pudiendo llegar hacia mas usuarios de tu aplicación.EXCELENTE!

2) No te tienes que preocupar por la memoria de la aplicación, acabando “casi” literalmente con los memory “leaks” y ahorrando tiempo. EXCELENTE!

Las personas que han leídosaben que el punto #1 es una mierda, y que no se está honrando, simple y sencillamente no sirve. Las personas que han programado anteriormente saben que existe un lenguaje, en el cual nunca nadie se ha tenido que preocupar por lo memoria, y se llama VISUAL BASIC. También saben que vienen recolectores de basuras disponibles para C++.

Y las personas que han programado en Java, sí saben que se tienen que preocupar por la memoria “aunque sea un poco”, porque los programas en Java, consumen más memoria, que por lo general uno escrito en C++.

Realmente sí uno lo piensa bien Java es una plataforma que corre encima de otra plataforma! Piensen en esto por un momento.

Y debo de ser realista y sincero pues a mí nadie me paga para escribir.
Aparte de todos los puntos malos que he expuesto en mis entradas anteriores, también cabe destacar que el lenguaje tiene unos puntos “super” bien atractivos, como lo es:

1) La sentencia Exception.printStackTrace(); que te ayuda a depurar a las millas , de una forma gloriosa. “hay algo parecido en C++”

2) Open Source.

3) La lógica en la sintaxis “todos los métodos adentro de sus respectivas clases”, “true no es 1, ni falso es 0“;

4) Cada versión nueva que sacan del JRE, los programas corren más rápidos.

5) javadoc

6) PUEDE QUE LA INERCIA, DE TU SOFTWARE, Dure mas tiempo pero esto lo pongo entre comillas “por que es algo que esta por verse”.

Se están trayendo ideas y conceptos bastantes buenos e innovadores. Hay muchos errores en lenguajes anteriores que se están evitando.

Estimo atravez de mí experiencia propia, que Java alcanzara en promedio por aplicación de escritorio la misma velocidad que los programas en C++ en más o menos dentro de unos 7 años, en el 2014. El único problemas es que mí tiempo es oro, vale dinero y no puedo esperar por nadie. En un año y medio, estoy seguro de que puedo dominar MFC y COM completamente.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: