Anda di halaman 1dari 16

Ing.

en Desarrollo de Software
INVESTIGACIÓN DOCUMENTAL Y DE CAMPO
INFORME FINAL
JAVA O C++ EN EL DESARROLLO DE APLICACIONES DE
ESCRITORIO

Aspirante: Carlos Alberto Estevez Castañeda


Blog: http://carlosalbertoestevez.blogspot.com

Miércoles 22 de agosto de 2018


Índice
JAVA O C++ EN EL DESARROLLO DE APLICACIONES DE ESCRITORIO ....................... 3
ALCANCE DE LA INVESTIGACIÓN ............................................................................................. 3
OBJETIVOS ...................................................................................................................................... 3
General........................................................................................................................................... 3
Específicos .................................................................................................................................... 3
METODOLOGÍA ............................................................................................................................... 4
BASES TEORICAS ...................................................................................................................... 4
ANTECEDENTES ........................................................................................................................ 4
Procedimiento ................................................................................................................................... 6
Cronograma de actividades ........................................................................................................ 6
Resultados ......................................................................................................................................... 7
Resultados de Encuesta ............................................................................................................. 7
Conclusión ....................................................................................................................................... 13
Referencias y Fuentes de Consulta ............................................................................................ 14
Anexos ............................................................................................................................................. 14
Entrevista ..................................................................................................................................... 14
Encuesta Cuantitativa ................................................................................................................ 15
JAVA O C++ EN EL DESARROLLO DE APLICACIONES DE
ESCRITORIO

Java es un lenguaje de programación de propósito general, concurrente, orientado a


objetos, que fue diseñado específicamente para tener tan pocas dependencias de
implementación como fuera posible. Su intención es permitir que los desarrolladores de
aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido
en inglés como WORA, o "write once, run anywhere"), lo que quiere decir que el código que
es ejecutado en una plataforma no tiene que ser recompilado para correr en otra. Java es,
a partir de 2012, uno de los lenguajes de programación más populares en uso,
particularmente para aplicaciones de cliente-servidor web, con unos diez millones de
usuarios reportados.
C++ es un lenguaje de programación diseñado en 1979 por Bjarne Stroustrup. La intención
de su creación fue el extender al lenguaje de programación C mecanismos que permiten la
manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes
orientados a objetos, el C++ es un lenguaje híbrido.
Posteriormente se añadieron facilidades de programación genérica, que se sumaron a los
paradigmas de programación estructurada y programación orientada a objetos. Por esto se
suele decir que el C++ es un lenguaje de programación multiparadigma.

ALCANCE DE LA INVESTIGACIÓN

Determinar la velocidad de ejecución en cada uno de los lenguajes de programación


mencionados, centrándonos en el tiempo de ejecución y compilación de cada uno de ellos.

OBJETIVOS
General
Analizar si el tipo de software a desarrollar importa en la implementación de dichos
lenguajes de programación.

Específicos
 Verificar si la máquina virtual de java ayuda en el rendimiento de la ejecución del
programa.
 Comprender si la manipulación de propiedades a bajo nivel beneficia al momento
de programar.
 Determinar si los mecanismos disponemos para liberar los recursos de los objetos
en c son mejores a los que presenta java.
METODOLOGÍA
Para llevar a cabo esta investigación se revisaron diversas fuentes de consulta, para lo cual
se llevará acabo la ayuda de dos entrevistas, las cuales serán aplicadas en la Universidad
Mexiquense del Bicentenario, Ues Tenango del Valle.

BASES TEORICAS
ANTECEDENTES

¿Java es lento?
Java tuvo sus inicios en 1991, y Sun Microsystems lo liberó al público en 1995. Aunque el
lenguaje heredó mucha de sus sintaxis de C/C++, los objetivos de Java en aquél entonces
pueden resumirse en los siguientes principios:

 Simple, orientado a objetos y familiar.


 Robusto y seguro.
 Arquitectónicamente neutro y portable.
 Ejecutándose en “alto desempeño”.
 Interpretado, con soporte a paralelismo y dinámico.
El compilador de Java convierte el código fuente en archivos bytecode, que
posteriormente son interpretados por la Máquina Virtual de Java o JVM, en un modelo de
ejecución en pila o stack. Las primeras versiones de Java – previas a la 1.2 – no
realizaban optimizaciones en el bytecode y debido a que las diferentes versiones de JVM
eran más bien genéricas, la ejecución tenía un desempeño pobre.
A partir de la versión 1.2 (diciembre de 1998), Java incluyó un compilador Just-In-Time o
JIT, que optimizaba el bytecode en tiempo real de acuerdo a la carga de trabajo sobre el
programa. Como contraste, un modelo de compilación estática como C/C++ “adivina”
dónde se encuentran los cuellos de botella y se enfoca en esa parte del código para
realizar la optimización, pero en el caso de ambientes dinámicos como las aplicaciones
web, el compilador JIT mantiene una relativa ventaja. Por otro lado, con cada nueva
versión de Java, el lenguaje ha ido mejorando su desempeño, ya sea por optimización en
la JVM, el recolector de basura o el compilador JIT. De acuerdo a este artículo, podemos
ver la comparación en desempeño entre C++ y Java en algunas funciones relativamente
sencillas. Lo sorprendente es lo malo que se desempeña C++ si durante la secuencia de
compilación y enlace (linking) se deshabilitan todas las banderas de optimización de
código. Adicionalmente, de la versión 6 a la 7, Java mejora su desempeño en alrededor
de un 33%.
¿Cómo se comparan Java y C++ en términos de programas “de la vida real”?
Actualmente abundan muchos microbenchmarks como el arriba mostrado, donde se
verifican funciones muy simples, como manipulación de arreglos o acceso a memoria. Sin
embargo, la mayoría de los casos de prueba son demasiado básicos como para ser un
indicador confiable del desempeño. En la actualidad, existe un estudio comparativo
formal: desarrollado por J. P. Lewis y Ulrich Neumann, investigadores de la Universidad
del Sur de California (USC), el estudio se basa en 5 pruebas con diferentes versiones de
Java y C++. Sus resultados, en términos generales, fueron los siguientes:

 Al comparar algoritmos numéricos como FFT, factorización de matrices o SORen


diferentes arquitecturas y compiladores, los investigadores encontraron que el
desempeño de Java en plataformas Intel es razonablemente cercano al de C++ y
que Java era más rápido que al menos un compilador en C (KAI sobre Linux Red
Hat 5.0). En hardware con Intel Pentium, especialmente con Linux, la diferencia en
desempeño es lo suficientemente pequeña como para carecer de importancia.
 Implementando microbenchmarks con y sin cache, los investigadores encontraron
que Java se encuentra justo a la mitad entre los mejores y los peores
compiladores de C++. Es decir, Java 3 es mejor que gcc 3.2, pero nunca le ganará
a un gcc 4.1.0.
Java es el que lidero el mercado en cuanto a lenguajes de programación se trata, nació
en el 95 y sigue en vigencia hasta ahora. Es considerado por muchos como el mejor
programador de todos los tiempos. Java es un lenguaje de programación gratuito que es
accesible para todo tipo de personas en la red. He aquí algunas características de este
lenguaje:

 Java está puramente dirigido a objetos, cualquier opción debe pertenecer a una
opción.
 Java se ejecuta sobre un procesador virtual, llamado la máquina virtual de Java,
capaz de interpretar datos en sistema binario
 El compilador creaun bytecode para la máquina virtual de Java, para ser
interpretado luego.
 Automáticamente Java desaparece los objetos cuando se queda sin referencias lo
que hace que se libere espacio.
 Los objetos son accedidos mediante referencias.
 Un paquete es una entidad organizativa que permite agrupar clases, interfaces y
excepciones, hace que sus elementos dispongan de una visibilidad privilegiada
con respecto a objetos externos al paquete.
 No existe la conversión implícita de tipos por considerarse que existen errores
potenciales.
 Solo existe la sobrecarga de métodos o funciones, ya que los operadores ya
vienen sobrecargados por el compilador.
 No existe la herencia múltiple por ser considerado como poco eficiente, pero esto
implico algunas críticas hacia Java.
 Interfaz es el conjunto de especificaciones de métodos y atributos constantes.
 Paquete de Java, como estructura dinámica, útil, los nombres y el funcionamiento
son distintos.
 Tiene un único compilador siempre igual.
 Todos los objetos heredan de la clase Object.
C++, SIGUIENDO DE CERCA LOS PASOS DE JAVA
C++ es un lenguaje de programación que fue creado a mediados de los años 80, y nació
con el objetivo de extender al exitoso lenguaje C, con mecanismo que permitan la
manipulación de objetos. A pesar de nacer primero, el mercado le fue arrebatado por Java
a inicios del siglo 21. Aquí las características que difieren de las de Java.
C++ se pueden crear programas dirigidos a objetos, a no objetos o a una mezcla de
ambos.

 El programa tiene control sobre el procesador (hardware + S.O.)


 El compilador genera un código de máquina para una plataforma concreta.
 La liberación de memoria no es automática sino manual.
 Existen punteros que permiten explorar la memoria del computador físico.
 No existe el concepto de paquete, lo más cercano es una biblioteca.
 Existe la conversión implícita de tipos (flexibilidad para el usuario)
 Existe la herencia múltiple.
 No existe el concepto de interfaces.
 Librería STL.
 Ningún ancestro común de objetos.

Procedimiento

Para poder llevar acabo esta investigación se establecieron días específicos para la
recopilación de información, así mismo los días que se iban a realizar la
investigación de campo.

Cronograma de actividades
Resultados
Resultados de Encuesta
En base a la encuesta realizada en la Universidad Mexiquense del Bicentenario de
Tenango del valle, Estado de México, los resultados obtenidos se muestran en las
siguientes gráficas. Así mismo la encuesta fue aplicada a 15 habitantes de la
comunidad.
Resultados obtenidos.
Preg.1
1. ¿Has programado en los lenguajes de programación C++ o Java?

C++ Y Java

Sí No

Interpretación: La mayoría de los estudiantes han usado los lenguajes de


programación en el trayecto de su estancia estudiantil.
Preg.2
2. ¿Cuál lenguaje de programación has usado?

Java o C++

Java C++

Interpretación: Por ser un lenguaje comercial Java es más usado en la institución


a diferencia de C++.
Preg.3
3. ¿Qué lenguaje de programación crees que es más rápido?

Velocidad Java Vs C++

Java C++

Interpretación: A pesar de que los estudiantes utilizan Java, estos


mencionan que el lenguaje C++ es superior en velocidad a diferencia de
Java.
Preg.4
4. A tu consideración, ¿qué lenguaje de programación tiene mejor desempeño
en aplicaciones de escritorio?

Mejor desempeño

Java C++

Interpretación: De igual manera los estudiantes creen que el lenguaje C++ es


superior en aplicaciones de escritorio a diferencia del lenguaje Java, sin importar
que estos usen el lenguaje Java para programar.
Preg.5
5. Consideras que tanto Java como C++, ¿son igual de buenos?

Java o C++

Sí No

Interpretación: Aunque en las respuestas anteriores C++ haya ganado, los


alumnos siguen creyendo que ambos lenguajes son igual de buenos.
Preg.6
6. ¿Optarías por cambiarte de lenguaje de programación?

Ventas

Sí No

Interpretación: A pesar de que los alumnos dijeran que el lenguaje C++ es mejor
en varios aspectos con respecto a Java, todos aceptan que cambiarían de lenguaje
de programación, dependiendo de la necesidad que se presente.
Preg.7
7. ¿Crees que las características de un pc impidan sacarle el máximo provecho
a un lenguaje de programación?

Ventas

Sí No

Interpretación: La mayoría comento que el desempeño de un pc puede variar,


pero en estos tiempos, casi todas las pc cuentan con buenas características a
diferencia de hace años.

Conclusión

La mayoría de los estudiantes creen que el lenguaje de programación C++ es


superior a Java, solo por el hecho de que lo han escuchado, pero la mayoría de
ellos no han usado dicho lenguaje, simplemente se dejan influenciar por lo que
los demás programadores comentan de ambos lenguajes, sin ver realmente los
beneficios de cada uno de dichos lenguajes de programación.
Referencias y Fuentes de Consulta
 everac99. 12/13/2012. Desempeño de C++ vs. Java: todo reside en la calidad del
compilador (y del programador también).
Recuperadohttps://everac99.wordpress.com/2012/12/13/desempeno-de-c-vs-java-
todo-reside-en-la-calidad-del-compilador-y-del-programador-tambien/

 Christian Felde. 27 de Junio de 2010. C ++ vs rendimiento de Java Es un empate.


Recuperado https://blog.cfelde.com/2010/06/c-vs-java-performance/

 CodingBash. 2 de enero de 2015. Speed Coding: Pong in C++ AND Java | Which
is Better?. Recuperado https://www.youtube.com/watch?v=jMauEVTNI1Y

Anexos

Entrevista
La presente entrevista servirá de apoyo para indagar cuál es el lenguaje de
programación más rápido, dependiendo de las opiniones de la experiencia que los
alumnos de la Universidad Mexiquense del bicentenario tienen.

Nombre: _________________________________________________

¿Has programado en el lenguaje de programación Java o C++, y por cuánto tiempo?


¿En base a tu experiencia que lenguaje de programación consideras más rápido?
¿Crees que el lenguaje de programación importe al momento que un programa este
corriendo de una maquina a otra?
¿Optarías por cambiarte de un lenguaje de programación?
¿Te centrarías en aprender o dominar un solo lenguaje de programación?
¿Consideras que el lenguaje de programación se pueda medir cualitativamente?
De acuerdo a todo lo anterior, ¿Qué lenguaje de programación considerarías que
es mejor en aplicaciones de escritorio?

¿Has programado en el lenguaje de programación Java o C++, y por cuánto tiempo?

R. Sí, por 4 años.

¿En base a tu experiencia que lenguaje de programación consideras más rápido?


R. En mi opinión siento que el leguaje de programación C++, es mucho más rápido
a diferencia de Java, ya que en C++ podemos controlar y administrar la memoria
directamente desde bajo nivel.

¿Crees que el lenguaje de programación importe al momento que un programa este


corriendo de una maquina a otra?

R. Sí, he visto videos en Youtube en los cuales se muestra la diferencia de velocidad


en ciertos videojuegos, incluso con menos librerías y líneas de código se puede
lograr maravillas de un lenguaje a otro, en este caso, C++ es un poco mejor en
cuanto a programación de videojuegos.

¿Optarías por cambiarte de un lenguaje de programación?

R. Sí, dado que para ser un buen programador debo saber adaptarme a nuevos
lenguajes y no solo estancarme en uno.

¿Te centrarías en aprender o dominar un solo lenguaje de programación?

R. No, en estos tiempos hay bastantes lenguajes de programación de los cuales


cada uno tiene su propia meta.

¿Consideras que el lenguaje de programación se pueda medir cualitativamente?

R. Sí, como lo mencione en la pregunta anterior, cada lenguaje de programación


tiene su propio enfoque, existen lenguajes de programación especificados para
web, escritorio, móvil y escritorio.

De acuerdo a todo lo anterior, ¿Qué lenguaje de programación considerarías que


es mejor en aplicaciones de escritorio?

R. Hablando de compatibilidad y rapidez en cuanto a programación, siento que el


lenguaje ideal sería Java, dado que este lenguaje se puede ejecutar en cualquier
plataforma o sistema operativo y la facilidad de programación que cuenta este
lenguaje, hace que los programadores realicen proyectos buenos y rápidos.

Encuesta Cuantitativa
La presente encuesta servirá de apoyo para indagar cuál es el lenguaje de
programación más rápido, dependiendo de la experiencia que los alumnos de la
Universidad Mexiquense del bicentenario tienen acerca de ellos.
1. ¿Has programado en los lenguajes de programación C++ o Java?
a) Sí b) No
2. ¿Cuál lenguaje de programación has usado?
a) Java b) C++
3. ¿Qué lenguaje de programación crees que es más rápido?
a) Java b) C++
4. A tu consideración, ¿qué lenguaje de programación tiene mejor desempeño
en aplicaciones de escritorio?
a) Java b) C++
5. Consideras que tanto Java como C++, ¿son igual de buenos?
a) Sí b) No
6. ¿Optarías por cambiarte de lenguaje de programación?
a) Sí b) No
7. ¿Crees que las características de un pc impidan sacarle el máximo provecho
a un lenguaje de programación?
a) Sí b) No

Anda mungkin juga menyukai