Reporte

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 16

Steffany Bandez CI: 24.929.

959

Lenguaje de programación C#:

Es un lenguaje de programación sencillo, moderno, orientado a objetos y con seguridad


de tipos. C# tiene sus raíces en la familia de lenguajes C.

C# es un lenguaje orientado a objetos, pero también incluye compatibilidad para


programación orientada a componentes. El diseño de software contemporáneo se basa
cada vez más en componentes de software en forma de paquetes independientes y
autodescriptivos de funcionalidad. La clave de estos componentes es que presentan un
modelo de programación con propiedades, métodos y eventos; tienen atributos que
proporcionan información declarativa sobre el componente; e incorporan su propia
documentación. C# proporciona construcciones de lenguaje para admitir directamente
estos conceptos, por lo que se trata de un lenguaje muy natural en el que crear y usar
componentes de software.

Varias características de C# ayudan en la construcción de aplicaciones sólidas y


duraderas: la recolección de elementos no utilizados automáticamente reclama la
memoria ocupada por objetos no utilizados y no accesibles; el control de
excepciones proporciona un enfoque estructurado y extensible para la detección de
errores y la recuperación; y el diseño del lenguaje con seguridad de tipos hace imposible
leer desde variables sin inicializar, indexar matrices más allá de sus límites o realizar
conversiones de tipos no comprobados.

Para asegurarse de que las programas y las bibliotecas de C# pueden evolucionar a lo


largo del tiempo de manera compatible, se ha puesto mucho énfasis en
el versionamiento del diseño de C#. Muchos lenguajes de programación prestan poca
atención a este problema y, como resultado, los programas escritos en dichos lenguajes
se interrumpen con más frecuencia de lo necesario cuando se introducen nuevas
versiones de las bibliotecas dependientes. Los aspectos del diseño de C# afectados
directamente por las consideraciones de versionamiento incluyen los
modificadores virtual y override independientes, las reglas para la resolución de
sobrecargas de métodos y la compatibilidad para declaraciones explícitas de miembros
de interfaz.
Características de C#:

 Multiplataforma. Actualmente, el lenguaje C# es de código abierto y se ha


utilizado en otros IDEs, como el proyecto Mono o Xamarin, y en múltiples
sistemas operativos, como puede ser OSx o Android.
 Integración con otros lenguajes. Cualquier lenguaje que se compile con .NET,
como la nueva versión de visual basic, puede aprovecharse para usarse en el
proyecto.
 Mejora en la gestión de memoria. Al igual que Java, en C# dispone de un
recolector de basura que destruye los objetos que no se usan en memoria.
 Multihilo. Se puede dividir el código en múltiples hilos de ejecución, trabajar en
paralelo y sincronizándose al final.
 Sobrecarga. Está permitida la sobrecarga de métodos.

Bibliotecas para el desarrollo GUI:

Collections/Generics PowerCollections. Es una librería de colecciones genéricas


complementarias a la que proporciona el CLR de .NET Framework desarrollada por
Intellect. Algunas de las clases que proporciona son Deque, MultiDictionary, Bag,
OrderedBag, OrderedDIctionary, además de las que extienden las que el propio CLR
proporciona.

Design by Contract Microsoft Code Contracts. Code Contracts facilita la adopción


de la programación por contratos de forma agnóstica al lenguaje mediante
precondiciones, poscondiciones e invariantes. Está bajo licencia Microsoft Research
Licence Agreement.

Unit Testing/Mocking/BDD NUnit. Inicialmente basada en la librería JUnit de Java,


NUnit 2.5 es la sexta versión basada en xUnit, está escrita en C# y fue totalmente
rediseñada para sacar el máximo provecho a la plataforma .NET. Se integra
perfectamente tanto con las MS Test Tools como con Resharper 5.x.

Lenguaje de programación Ruby:

El creador del lenguaje, ha dicho que Ruby está diseñado para la productividad y la
diversión del desarrollador, siguiendo los principios de una buena Interfaz de usuario.
Sostiene que el diseño de sistemas necesita enfatizar las necesidades humanas más que
las de la máquina. Ruby es totalmente libre. No sólo gratis, sino también libre para
usarlo, copiarlo, modificarlo y distribuirlo. En Ruby, todo es un objeto. Se le puede
asignar propiedades y acciones a toda información y Código. La programación
orientada a objetos llama a las propiedades variables de instancia y las acciones son
conocidas como métodos. La orientación a objetos pura de Ruby se suele demostrar con
un simple código que aplica una acción a un número. Ruby sigue la influencia del
lenguaje Smalltalk pudiendo poner métodos y variables de instancia a todos sus tipos de
datos. Esto facilita el uso de Ruby, porque las reglas que se aplican a los objetos son
aplicables a todo Ruby. Ruby es considerado un lenguaje flexible, ya que permite a sus
usuarios alterarlo libremente. Las partes esenciales de Ruby pueden ser quitadas o
redefinidas a placer. Se puede agregar funcionalidad a partes ya existentes. Ruby intenta
no restringir al desarrollador. Los bloques de Ruby son también vistos como una fuente
de gran flexibilidad. El desarrollador puede anexar una cláusula a cualquier método,
describiendo cómo debe actuar. La cláusula es llamada bloque y se ha convertido en una
de las más famosas funcionalidades para los recién llegados a Ruby que vienen de otros
lenguajes imperativos como PHP o Visual Basic. A diferencia de otros lenguajes de
programación orientada a objetos, Ruby se caracteriza por su intencional herencia
simple. Sin embargo, Ruby incorpora el concepto de módulos (llamados categorías en
Objective-C), que son colecciones de métodos. A pesar de que Ruby utiliza la
puntuación muy limitadamente y se prefieren las palabras clave en inglés, se utiliza algo
de puntuación para decorar el código. Ruby no necesita declaraciones de variables. Se
utilizan convenciones simples para nombrar y determinar el alcance de las mismas.

Características de Ruby:

 Multihilo. Tiene manejo de hilos (threading) independiente del sistema


operativo. De esta forma, se tiene soporte multihilo en todas las plataformas en
las que corre Ruby, sin importar si el sistema operativo lo soporta o no.
 Multiplataforma. Ruby es fácilmente portable: se desarrolla mayoritariamente
en GNU/Linux, pero corre en varios tipos de UNIX, Mac OS X, Windows
95/98/Me/NT/2000/XP, DOS, BeOS, OS/2, etc.
 Carga dinámica de DLL/bibliotecas compartidas en la mayoría de las
plataformas.
 Sobrecarga. Ruby no soporta esta característica, sin embargo, se puede lograr
con ciertas técnicas. Una de las razones por las que la sobrecarga no es posible
en Ruby es porque es un lenguaje fuertemente no tipeado, es decir que Ruby no
sabe distinguir entre un argumento de tipo entero entre uno de tipo cadena
(string) porque la tipificación se da en tiempo de ejecución (Ruby es un
lenguaje interpretado no compilado).
 Gestión de memoria automática.

Bibliotecas para el desarrollo GUI:

wxWidgets. Son unas bibliotecas multiplataforma y libres, con la ventaja que nos
permite producir o usar el código como privativo (cuando se trata de software
empresarial por ejemplo), hechos y creadas para el desarrollo de interfaces gráficas en
C++. Su interfaz gráfica se basa en bibliotecas nativas, con lo que obtendrán gráficas
casi idénticas al del entorno que usen y resuktan muy portables entre distintos sistemas
operativos. Están disponibles para Windows, MacOS, GTK+, Motif, OpenVMS y OS/2.

GTK+. Es un conjunto de bibliotecas multiplataforma para desarrollar interfaces


gráficas de usuario y es software libre (LGPL), en los cuales están basados los entornos
gráficos gnome, XFCE y lxde y programas como gedit, gnumeric, geany, glade, anjuta,
etc., posee además librerías multiplataforma por lo que existen librerías para Windows,
MacOS y otros.

Qt. Es una biblioteca multiplataforma para desarrollar interfaces gráficas de usuario,


aunque también permite el desarrollo de programas sin interfaz gráfica como
herramientas de la consola y servidores. Es producido por la Nokia. Qt es utilizada en
KDE, konqueror, kedit, etc. Qt creado y desarrollado con C++ de forma nativa, usa una
fuerte programación orientada a objetos, permite usar otros lenguajes de programación.

El API de la biblioteca cuenta con accesos a bases de datos, así como uso de XML,
gestión de hilos, soporte de red, manipulación de archivos, manejo de ficheros, etc.

Lenguaje de programación Python:

Python es un lenguaje de scripting independiente de plataforma y orientado a objetos,


preparado para realizar cualquier tipo de programa, desde aplicaciones Windows a
servidores de red o incluso, páginas web. Es un lenguaje interpretado, lo que significa
que no se necesita compilar el código fuente para poder ejecutarlo, lo que ofrece
ventajas como la rapidez de desarrollo e inconvenientes como una menor velocidad.

En los últimos años el lenguaje se ha hecho muy popular, gracias a varias razones
como:

 La cantidad de librerías que contiene, tipos de datos y funciones incorporadas en


el propio lenguaje, que ayudan a realizar muchas tareas habituales sin necesidad
de tener que programarlas desde cero.
 La sencillez y velocidad con la que se crean los programas. Un programa en
Python puede tener de 3 a 5 líneas de código menos que su equivalente en Java.

Python permite dividir el programa en módulos reutilizables desde otros programas


Python. Viene con una gran colección de módulos estándar que se pueden utilizar como
base de los programas. También hay módulos incluidos que proporcionan E/S de
ficheros, llamadas al sistema, sockets y hasta interfaces a GUI (interfaz gráfica con el
usuario) como Tk, GTK, Qt entre otros.

Python se utiliza como lenguaje de programación interpretado, lo que ahorra un tiempo


considerable en el desarrollo del programa, pues no es necesario compilar ni enlazar. El
intérprete se puede utilizar de modo interactivo, lo que facilita experimentar con
características del lenguaje, escribir programas desechables o probar funciones durante
el desarrollo del programa.

Python es un lenguaje de programación poderoso y fácil de aprender. Cuenta con


estructuras de datos eficientes y de alto nivel y un enfoque simple pero efectivo a la
programación orientada a objetos. La elegante sintaxis de Python y su tipado dinámico,
junto con su naturaleza interpretada, hacen de éste un lenguaje ideal para scripting y
desarrollo rápido de aplicaciones en diversas áreas y sobre la mayoría de las
plataformas.

Características de Python:
 Multiplataforma. Al contrario que muchos lenguajes como visual basic, que
principalmente solo se puede hacer cosas para Windows, con Python se tiene la
posibilidad de usarlo en muchos dispositivos y sistemas operativos, ya que se
han creado intérpretes para Unix, Linux, Windows y sistemas Mac Os.
 Sobrecarga. En Python no se tiene sobrecarga de métodos, ya que al no definir
los tipos de los parámetros en el encabezado, no sería posible distinguir a qué
método hay que llamar. Sin embargo, se puede decir que sí tiene sobrecarga de
operadores, ya que al encontrar un operador, Python llamará a distintos métodos
según el tipo de las variables que se quiera sumar, restar, multiplicar, etc.
 Multihilo: Los subprocesos permiten que los programas de Python manejen
múltiples funciones a la vez en lugar de ejecutar una secuencia de comandos
individualmente. Sin embargo, tiene una forma complicada en el desarrollarlo
para ejecutar múltiples hilos.
 Manejo de memoria. Python, como C #, Java, Ruby, Kotlin y muchos otros
idiomas, utiliza la recolección de basura en lugar de la administración de
memoria manual. Simplemente crea objetos libremente y el administrador de
memoria del idioma periódicamente (o cuando lo dirige específicamente) busca
cualquier objeto que ya no esté referenciado por su progtwig.

Bibliotecas para el desarrollo GUI:

PyQt. PyQt implementa la popular biblioteca Qt. Esto abre la posibilidad de desarrollar
aplicaciones en Python que tengan un aspecto familiar en muchas plataformas, al
tiempo que aprovechan las herramientas y el conocimiento de la gran comunidad de Qt.

PyQt tiene doble licencia bajo licencia comercial y GLP, similar al proyecto Qt en sí, y
la compañía principal que brinda soporte a PyQt ofrece una licencia de FAQ para
ayudar a entender lo que esto significa para su aplicación.

Tkinter. Es una envoltura alrededor de Tcl/Tk, una interfaz gráfica popular y el


emparejamiento de idiomas que se popularizó por primera vez a principios de los 90. La
ventaja de elegir Tkinter es la gran cantidad de recursos, incluidos libros y ejemplos de
código, así como una gran comunidad de usuarios que pueden ayudarlo si tiene alguna
pregunta.
WxPython. Trae la biblioteca de GUI multiplataforma de wxWidgets desde su C++
nativo a Python. WxPython es un enfoque un poco más moderno, que parece un poco
más nativo que Tkinter en diferentes sistemas operativos, ya que no intenta crear su
propio conjunto de widgets (aunque estos pueden tener un aspecto similar al de los
componentes nativos).

Lenguaje de programación Java:

Java es un lenguaje de programación orientado a objetos que se incorporó al ámbito de


la informática en los años noventa. La idea de Java es que pueda realizarse programas
con la posibilidad de ejecutarse en cualquier contexto, en cualquier ambiente, siendo así
su portabilidad uno de sus principales logros. Fue desarrollado por Sun Microsystems,
posteriormente adquirido por Oracle. En la actualidad puede utilizarse de modo gratuito,
pudiéndose conseguir sin problemas un paquete para desarrolladores que oriente
la actividad de programar en este lenguaje. Puede ser modificado por cualquiera,
circunstancia que lo convierte en lo que comúnmente se denomina “código abierto”.

Estrictamente hablando, Java es interpretado, aunque en realidad Java es tanto


interpretado como compilado. De hecho, sólo cerca del 20% del código Java es
interpretado por la JVM (Java Virtual Machine), pero es un 20% muy importante. Tanto
la seguridad de Java como su habilidad para ser ejecutado en múltiples plataformas se
deben a que los pasos finales de la compilación se manejan localmente.

Existen ciertos entornos que para mejorar el rendimiento usan un pequeño compilador
para la última fase de compilación, de forma que una vez que se tenga el bytecode, en
vez de interpretarlo se compila generando código nativo para esa plataforma y se
ejecuta, pero esta compilación se realiza cada vez que se quiera ejecutar el programa. El
único código realmente independiente es el bytecode. Este tipo de compiladores se
conocen como 'Just In Time' o JIT. Sin embargo, el bytecode no se completa hasta que
se junta con un entorno de ejecución, que en este caso será la máquina virtual Java de la
plataforma en la que estemos. Un browser puede proveer dicha plataforma desde el
punto de vista del sistema operativo.

En la actualidad, este lenguaje de programación ha ganado una enorme popularidad


como consecuencias de su portabilidad, su simpleza y sus grandes posibilidades de
utilización. Está especialmente extendido su uso en dispositivos móviles, circunstancia
que se profundizará en el futuro.

Características de Java:

 Sobrecarga. En Java, dos o más métodos dentro de la misma clase pueden


compartir el mismo nombre, siempre que sus declaraciones de parámetros sean
diferentes. Cuando este es el caso, se dice que los métodos están sobrecargados,
y el proceso se denomina sobrecarga de métodos (methodoverloading). La
sobrecarga de métodos es una de las formas en que Java
implementa polimorfismo.
 Multihilo. Al ser multihilo, Java permite muchas actividades simultáneas en un
programa. El beneficio de ser multihilo consiste en un mejor rendimiento
interactivo y mejor comportamiento en tiempo real. Aunque el comportamiento
en tiempo real está limitado a las capacidades del sistema operativo subyacente
(Unix, Windows, etc.) de la plataforma, aún supera a los entornos de flujo único
de programa (single-threaded) tanto en facilidad de desarrollo como en
rendimiento.
 Manejo de memoria. Java utiliza unas zonas de memoria llamadas STACK
(pila) y HEAP (montón) para guardar variables, referencias, etc.
 Arquitectura Neutral. Para establecer Java como parte integral de la red, el
compilador Java compila su código a un fichero objeto de formato independiente
de la arquitectura de la máquina en que se ejecutará. Cualquier máquina que
tenga el sistema de ejecución (run-time) puede ejecutar ese código objeto, sin
importar en modo alguno la máquina en que ha sido generado. Actualmente
existen sistemas run-time para Solaris 2.x, SunOs 4.1.x, Windows '95, Windows
NT, Linux, Irix, Aix, Mac, Apple y probablemente haya grupos de desarrollo
trabajando en el porting a otras plataformas.

Bibliotecas para el desarrollo GUI:

Java Swing. Es una herramienta de interfaz gráfica de usuario (GUI) ligera que incluye
un amplio conjunto de widgets. Incluye un paquete que le permite crear componentes de
GUI para sus aplicaciones Java, y es independiente de la plataforma.
La biblioteca Swing está construida sobre el conjunto de herramientas de widgets
abstractos de Java (AWT), un kit de herramientas GUI más antiguo que depende de la
plataforma. Puede utilizar los componentes de la GUI de Java como el botón, el cuadro
de texto, etc., de la biblioteca y no tiene que crear los componentes desde cero.

AWT. Significa Abstract Window Toolkit. Pese a ser la más antigua, también es la más
completa. Se centra en el sistema operativo (SO) para dibujar gráficos, por lo que cada
SO o plataforma tendrá su propia GUI. Esto significa que se verá diferente o tendrá u n
aspecto distinto en cada una de las plataformas.

SWT. Significa Standard Widget Toolkit. Conjunto de components para contruir


interfaces gráficas. Fue creada por IBM para ayudar en el desarrollo de Eclipse, y
actualmente, se encarga el propio IDE Eclipse de su mantenimiento. Se pudiera decir
que es ideal para GUIs complejas y que tendrá un aspecto distinto en función del SO en
el que se ejecute.

Lenguaje de programación Kotlin:

Kotlin es un lenguaje de programación fuertemente tipeado, es decir, es la máquina virtual


la que infiere el tipo a las variables y, por tanto, no hay que especificarlas. Es un lenguaje
que corre bajo la Máquina Virtual de Java, por lo que tiene el mismo rendimiento que Java,
sin penalizar en ningún momento en este aspecto.

Está diseñado para interoperar con Java, por lo tanto se puede tener módulos programados
en Java y otros módulos desarrollados en Kotlin. Estos módulos se podrían comunicar
perfectamente sin problemas, simplemente tendrían que salvar el escalón que existe entre
el desarrollo en Java y las premisas que tiene el desarrollo en Kotlin.

Kotlin es compatible con librerías ya existentes, ya que todas las librerías que existen
actualmente para Java están ya migradas o bien se pueden usar desde Kotlin. No existe
ningún problema en emplear librerías como Retrofit, Dagger 2, Realm o Joeq, por lo tanto
no es ningún inconveniente pasarse al desarrollo en Kotlin porque no se tenga librerías o
documentación.
La migración de una aplicación Java existente a Kotlin se puede realizar de manera
gradual, desarrollando el código nuevo, o cambiando gradualmente partes del código en
Kotlin mientras se mantiene el código antiguo Java.

Debido a la compatibilidad completa con Java, Kotlin ha podido ser utilizado para
desarrollar para Android desde su aparición, aunque sin soporte oficial por parte de
Google.Esto cambió en Mayo de 2017, cuando Google hizo oficial el soporte de Kotlin.

Kotlin no se limita a ofrecer simplemente la opción de cambiar código Java por Kotlin,
sino que ofrece una serie de herramientas para ofrecer funcionalidades extra:

Kotlin Android Extensions es una extensión del compilador que permite sustituir las
llamadas a findViewById() por propiedades generadas en tiempo de compilación
automáticamente.

Entre sus ventajas se mencionan: Menor cantidad de código, más claro, con menos
posibilidades de bugs, y todo con una curva de aprendizaje pequeña y gran similitud a
otros lenguajes altamente extendidos.

Características del lenguaje:

 Sobrecarga. En Kotlin se pueden sobrecargar cierto número de operadores,


implementando la función correspondiente en una clase. Esa función debe ser
marcada con la palabra reservada operator.

 Multihilo. No contempla la idea de la programación multihilo pero posee una


herramienta llamada corrutinas. Las corrutinas son una de las características más
interesantes de Kotlin. Con ellas, se puede simplificar el trabajo de las tareas
asíncronas de una manera impresionante y hacer que el código sea mucho más
legible y fácil de entender.

 Multiplataforma. Inicialmente Kotlin fue creado para aplicaciones Desktop


(que es el mercado de JetBrains) pero ahora mismo Kotlin es multiplataforma
con soporte para Android, compilación a JavaScript e incluso compilación
nativa via LLVM para entornos donde JVM no sea una buena opción.
 Gestión de memoria. Se ha diseñado Kotlin/Native de forma que pueda ofrecer
diferentes soluciones de gestión de memoria según la plataforma destino.

Bibliotecas para el desarrollo GUI:

Anko. Es un stack de utilidades creado con el fin de incrementar la productividad de los


desarrolladores. Además, proporciona de manera rápida un código limpio y fácil de leer.

Internamente, incluye 4 módulos:

 Anko Commons: Es una tool box que, al igual que KANdroid, facilita la
interacción con elementos del framework de Android (como Intent, Dialog o el
log de la aplicación.
 Anko Layouts: Permite el diseño de interfaces gráficas de usuario de manera
programática, es decir, desde el código fuente, eliminando así la necesidad de
los archivos XML.
verticalLayout {
val name = editText ( )
button (“Say Hello”) {
onClick { toast (“Hellos, ${name.text}!”) }
}
}
 Anko SQLite: Reduce drásticamente el número de elementos necesarios para
comunicarse con el repositorio y proporciona una sintaxis muy parecida a SQL.
fun getUsers (db: ManagedSQLiteOpenHelper): List = db.use {
db.select (“Users”)
.whereSimple (“family_name = ?”, “John”)
.doExec ( )
.parseList (UserParser)
}
 Anko Coroutines: Las corrutinas mejoran la legibilidad del código asíncrono de
las apps. Básicamente, prescinden de los callbacks usados para notificar que una
determinada operación ha terminado de ejecutarse. En su lugar, permiten escribir
las diferentes acciones de manera secuencial. De esta manera, el orden en el que
se declaran las instrucciones determina el orden en que se ejecutarán las
operaciones.
fun getData ( ): Data {…}
fun showData (data: Data) {…}
async (UI) {
val data: Deferred = bg {
// Runs in background
getData ( )
}
// This code is executed on the UI thread
showData (data.await ( ) )
}

KAndroid. Es una librería diseñada para explorar una de las características más
importantes de Kotlin: las extensiones, que permiten añadir comportamiento a las
propiedades y métodos de cualquier clase.

Incluye diferentes utilidades para reducir el boilerplate code y evitar duplicidades de


código.

// instead of findViewById (R.id.textView) as TextView


Val textView = find<TextView> (R.id.textView)

/* instead of:
editText.addTextChangedListener (object : TextWatcher {
override fun beforeTextChange (s: CharSequence?, start: Int, count: Int, after: Int) {
before ( )
}
override fun onTextChanged (s: CharSequence?, start: Int, before: Int, count: Int) {
onChange ( )
}
override fun afterTextChanged (s: Editable?) {
after ( )
}
} ) */
editText.textWatcher {
beforeTextChanged { text, start, count, after - > before ( ) }
onTextChanged { text, start, before, count - > onChange ( ) }
afterTextChanged { text - > after ( ) }
}

// instead of LayoutInflater.from (context).inflate (R.layout.some_layout, null, false)


Context.inflateLayout (R.layout.some_layout)
// or
Context.inflateLayout (R.layout.some_layout, attachToRoot = true)

Como se puede ver, además de ahorrar algunas valiosas líneas de código, el programa
resultante es mucho más legible, puesto que se omite toda la verbosidad típica de otros
lenguajes como, por ejemplo, Java.

PreferenceHolder. Esta librería hace entretenidas las siempre tediosas Shared


Preferences de Android ya que permite encapsular en un objeto todas las parejas clave-
valor a almacenar.
object UserPref: PreferenceHolder ( ) {
var canEatPie: Boolean by bindToPreferenceField (tue)
var allPieInTheWorld: Long by bindToPreferenceField (0)
var isMonsterKiller: Boolean? by bindToPreferenceFieldNullable ( )
var monstersKilled: Int? by bindToPreferenceFieldNullable ( )
}
Una vez declarado, el anterior element abstrae la manipulación de los valores guardados
en preferencias, que se tratan como propiedades del mismo, prescindiendo así del
PreferenceManager.
If (Pref.canEatPie) //…

Comparación de las características de la Programación Orientada a Objetos entre


los lenguajes C#, Ruby, Python, Java y Kotlin:

Los lenguajes de programación descritos previamente comparten algunas características


que los definen, entre las principales se tiene que tanto Python como Ruby son
lenguajes interpretados lo cual quiere decir que no se compilan a diferencia de C#,
Kotlin y Java que si son compilados, los cuales corren bajo la Máquina Virtual de Java.

Otra característica compartida entre estos lenguajes es que todos son multiplataforma, es
decir, se tiene la posibilidad de usarlos en diversos sistemas operativos, también
presentan un recolector de basura para el manejo de la memoria lo que facilita la
destrucción de los objetos que no se usan en memoria.

En cuanto a la sobrecarga, hay algunos lenguajes que no soportan la sobrecarga de


métodos como es el caso de Python y Ruby mientras que C#, Java y Kotlin si admiten
este tipo de sobrecarga. Por último, si se trata de programación multihilos, los lenguajes
Ruby, C#, Python y Java son ideales para realizar muchas actividades simultáneas en un
programa, sin embargo en Python se tiene una forma complicada en el desarrollarlo para
ejecutar múltiples hilos.

Caso de uso:

Solución al problema de impresión de documentos haciendo uso del lenguaje de


programación Java utilizando la biblioteca javax.print de Java 2D.
Razones por la cual elegir a Java:

1) Java 2D es el lenguaje de programación que cuenta con una variedad de librerías


para la impresión de documentos, brindando alternativas que puedan adaptarse
cómodamente al problema presentado.
2) La librería a utilizar (javax.print) permite indicar la impresora sobre la que se
quiere hacer la impresión y algunas de sus características, como tamaño de
páginas, páginas a imprimir o buscar las impresoras de la red, así como el tipo
de documento.
3) Se comunica directamente con la impresora, sin pasar por un programa que
interprete el fichero, y sólo soporta algunos tipos comunes de datos como por
ejemplo imágenes (JPEG, GIF, PNG…) o documentos en un formato abierto
para impresoras como PCL, PDF o PS. Por tanto al final se trata de un envío de
datos directamente a la impresora desde el programa Java, utilizando protocolos
de comunicación con la impresora (como PostScript).

Entradas:

- Tipear: nombre del archivo.


- Abrir el documento.
- Leer el documento.
- Escoger la impresora.
- Conectarse a la impresora.
- Agregar el documento a la impresora.

Salidas:

- Pantalla: cuadro de dialogo.


- Impresión del documento.

Paso Acción del usuario Respuesta del sistema


1 El usuario solicita añadir documentos.
2 Se muestra una lista de
documentos.
3 El usuario emite una orden para realizar la
búsqueda del documento.
4 El sistema pregunta por el
nombre del documento.
5 El usuario ingresa el nombre del documento.
6 El sistema ubica y muestra
el documento.
7 El usuario selecciona el documento y solicita la
impresión del mismo.
8 El sistema pregunta a qué
impresora se desea
conectar.
9 El usuario selecciona la impresora disponible. Si
no aparece ninguna debe verificar que su
computador se encuentre conectado a la misma
red de la impresora y que se encuentre encendida.
10 El sistema muestra un
cuadro de dialogo para
agregar el documento a la
impresora.
11 El usuario arrastra y suelta el documento en el
cuadro de dialogo de agregar documentos a la
impresora y solicita ver el cuadro de dialogo de
impresión.
12 El sistema muestra el
cuadro de dialogo de
impresión.
13 El usuario procede a llenar el cuadro
seleccionando la impresora, especifica el número
de copias y el tamaño de la hoja y presiona el
botón OK.
14 El sistema actualiza el
cuadro de dialogo con los
datos introducidos por el
usuario y emite la orden a
la impresora para imprimir
el documento. Si el usuario
presiona cancelar se
termina el proceso.

También podría gustarte