Article View: es.comp.lenguajes.java
Article #25754Re: Java vs C++
From: Jonathan Revusky
Date: Thu, 11 Mar 1999 00:00
Date: Thu, 11 Mar 1999 00:00
98 lines
5716 bytes
5716 bytes
Rafael Garcia Leiva wrote: > > [Posted and mailed] > > In article <36E65683.CF3A1435@tissat.es>, > Alvaro Fuentes <afuentes@tissat.es> writes: > > > > Los �nicos aspectos en el que el lenguaje Java sale > > "perdiendo" es la ausencia de herencia m�ltiple y el > > rendimiento en la ejecuci�n > > > > En cuanto al tema de la herencia multiple, nunca he tenido demasiado > claro por que no esta incluida en Java. > En el libro "The Java programming > languaje" de James Gosling, hace referencia a los problemas derivados > de la herencia en forma de diamante, pero otros autores dicen que esto > no es tan grave. Creo que puede ser grave si tienes un modelo de linking din�mico en que una clase se carga de un servidor y se tiene que resolver sobre la marcha. Es mucho m�s f�cil resolver una clase si s�lo hay herencia sencilla. De no ser as�, puede tratarse de traversar todo un �rbol para resolver las invocaciones de los m�todos. Y hay justamente el problema de diamante etcetera. > Tampoco se si los interfaces dan la misma funcionalidad > que la herencia multiple, como proponen en la FAQ de Java. Personalmente, me doy cuenta cada vez m�s que lo interesante en muchos casos no es herencia de implementaci�n sino herencia de interfaz. Es m�s bien la herencia de interfaz la clave para hacer dise�os robustos. Herencia de implementaci�n, de hecho, se puede abusar, a veces es mejor usar un esquema de delegaci�n/composici�n. Depende del caso, por supuesto. Mi impresi�n es que con la introducci�n de las inner classes, combinada con las interfaces, funcionalmente, Java ofrece lo que otros sistemas ofrecen con herencia m�ltiple de todas formas. Bueno, se hace de modo distinto, pero el efecto es lo mismo. Mira, por ejemplo, usos de interfaces e inner classes en el c�digo de Swing. > Sobre el rendimiento de ejecucion ya se ha hablado mucho, pero me > gustaria apuntar dos cosas: > > - La primera es que la gente tiende a confundir el lenguaje java con > las maquinas virtuales, y claro, si tienen una maquina virtual lenta, dan > por supuesto que java es lento. En concreto la maquina de BlackDown es una > de las mas utilizadas, y desgraciadamente, tambien una de las mas lentas. > Ver http://www.javaworld.com/javaworld/jw-03-1999/jw-03-volanomark.html Lo he visto. Es IBM que tiene el Java m�s veloz ahora. Se puede bajar una JVM de IBM para NT o Windows 95 en el alphaworks. Tiene su propio compilador JIT que supera el de Symantec, me parece. He estado jugando con eso. Lo �nico es que usa mucha memoria. El verdadero problema ahora mismo con Java quiz� sea que es un nuevo modelo de ejecuci�n, en cierto sentido, en comparaci�n con los ejecutables est�ticos que se crean en C++. Las plataformas sobre las cuales Java corre no fueron dise�adas con Java en mente. La JVM es algo injertado encima de Windows. El S.O. no es en ning�n sentido "java-aware". Un resultado de eso es que una librer�a de clases en Java se tiene que volver a cargar desde cero cada vez que se utiliza en una aplicaci�n nueva, a diferencia de un .DLL nativo. Entonces, una aplicaci�n Java tiende a tardar much�simo m�s tiempo en inicializarse que una aplicaci�n nativa. Entonces, s� que hay problemas en la implementaci�n de Java sobre los S.O. actuales que tienden a hacer que, en la pr�ctica, corre m�s lento. Pero tienes raz�n. No son problemas con Java en s�. Es algo que se tiene que matizar much�simo. Mira, si accedes a Internet a traves de una l�nea telef�nica convencional, tu experiencia de Internet es que es lento. �Por qu�? Porque est�s utilizando una red de comunicaciones que no fue dise�ada con Internet en mente. Entonces, tu experiencia es extrema lentitud. Pero decir que Internet *es* lento como alg�n hecho inmutable es muy dif�cil de sostener. Consigues una conexi�n T1 y tu experiencia es distinta. Internet no es intr�nsecamente lento. El argumento general que Java debe ser m�s lento que C++ es muy dif�cil de sostener. Decir que los primeros prototipos de una tecnolog�a son lentos es muy diferente de decir que la tecnolog�a es lenta. > - La segunda es que la gente no utiliza java, aduciendo la lentitud, > incluso aunque esten hablando de programas interactivos. Que mas da que > un programa tarde 0.0001 segundos de mas si despues el usuario tarda varios > segundos en leer y responder? Correcto. La gran mayor�a de c�digo que escribimos d�a a d�a no tiene porque ser muy optimizado. Todo ese discurso seg�n el cual la preocupaci�n principal de un programador es maximizar la velocidad de ejecuci�n me da una sensaci�n realmente inc�moda. Jonathan Revusky -- Java and Delphi Consulting Make your .class files double-clickable with SmartJ http://www.bigfoot.com/~crystalline.solutions
Technical Details
Message-ID:
<36E7DC7A.8CDC3CDA@jet.es>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<7c5a5e$1f0$1@mercurio.cica.es> <36E65683.CF3A1435@tissat.es> <7c807o$jf$1@mercurio.cica.es>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: 1116f3,3b1718ca1122f30f X-Google-Attributes: gid1116f3,public From: Jonathan Revusky <jrevusky@jet.es> Subject: Re: Java vs C++ Date: 1999/03/11 Message-ID: <36E7DC7A.8CDC3CDA@jet.es> X-Deja-AN: 453822006 Content-Transfer-Encoding: 8bit References: <7c5a5e$1f0$1@mercurio.cica.es> <36E65683.CF3A1435@tissat.es> <7c807o$jf$1@mercurio.cica.es> X-Accept-Language: en Content-Type: text/plain; charset=iso-8859-1 X-Complaints-To: usenet@lola.ctv.es X-Trace: lola.ctv.es 921165337 12765 195.55.162.139 (11 Mar 1999 15:15:37 GMT) Organization: CTV/JET Mime-Version: 1.0 Reply-To: jrevusky@bigfoot.com NNTP-Posting-Date: 11 Mar 1999 15:15:37 GMT Newsgroups: es.comp.lenguajes.java