Evaluación bibliométrica acerca de “Subprocesos
con hilos de JAVA”
Bibliometric evaluation
about “JAVA Threaded Subprocesses”
Wilian Delgado-Muentes
Universidad Laica Eloy Alfaro de Manabí. Manta,
Ecuador
wilian.delgado@uleam.edu.ec
Armando Franco-Pico
Universidad Laica Eloy Alfaro de Manabí. Manta,
Ecuador
armando.franco@uleam.edu.ec
Marco Ayoví-Ramírez
Universidad Laica Eloy Alfaro de Manabí. Manta,
Ecuador
marco.ayovi@uleam.edu.ec
RESUMEN
JAVA
es un lenguaje de programación de propósito general, basado en clases y
orientado a objetos, diseñado para tener menores dependencias de
implementación. Un hilo, en el contexto de JAVA, es el camino que se sigue al
ejecutar un programa. Una aplicación de subproceso único tiene un solo
subproceso y solo puede manejar una tarea a la vez. Para manejar varias tareas
en paralelo, se utilizan subprocesos múltiples: se crean varios subprocesos,
cada uno de los cuales realiza una tarea diferente. El propósito de la
siguiente investigación fue desarrollar una evaluación bibliométrica de las
publicaciones en torno a los subprocesos o hilos de JAVA, para lo cual se ejecutaron
búsquedas de publicaciones relacionadas con JAVA mediante el uso de la base de
datos ampliada Science Citation Index de Web of Science Core Collection
(WoSCC). Un total de 965 documentos cumplieron con los criterios de búsqueda,
que se aplicaron en este estudio. Entre los principales resultados derivados de
este procedimiento se encontró que la producción anual de publicaciones se
mantuvo en un nivel bastante bajo, pero aumentó drásticamente desde 2016 y
alcanzó un pico en 2020 con 550. Por su parte, el número de publicaciones
anuales de China ha sido menor que el de los Estados Unidos en los primeros 6
años, pero la brecha se ha reducido gradualmente. Y en 2018, el número de
publicaciones anuales de China superó al de Estados Unidos. Finalmente, La
institución más productiva en investigación relevante fue la Universidad de
Texas.
Palabras clave:
JAVA, subprocesos, hilos, programación, evaluación bibliométrica, WoSCC.
ABSTRACT
JAVA is a general-purpose, class-based,
object-oriented programming language designed to have fewer implementation
dependencies. A thread, in the context of JAVA, is the path followed when
executing a program. A single threaded application is single threaded and can
only handle one task at a time. To handle multiple tasks in parallel,
multithreading is used: multiple threads are created, each of which performs a
different task. The purpose of the following investigation was to develop a
bibliometric evaluation of publications around JAVA threads, for which
JAVA-related publications were searched using the expanded Science Citation
Index database of the Web of Science Core Collection (WoSCC).
A total of 965 documents met the search criteria, which were applied in this
study. Among the main results derived from this procedure, it was found that
the annual production of publications remained at a fairly low level, but increased drastically since 2016 and reached a
peak in 2020 with 550. For its part, the number of annual publications in China
has been less than that of the United States in the first 6 years, but the gap
has gradually narrowed. And in 2018, China's number of annual publications
surpassed that of the United States. Finally, the most productive institution
in relevant research was the University of Texas.
Keywords: JAVA, threads, bibliometric evaluation, programming,
WoSCC.
1.
INTRODUCCIÓN
JAVA
fue desarrollado por James Gosling en Sun Microsystems Inc en el año 1991,
luego adquirido por Oracle Corporation. Es un lenguaje de programación
simple. Facilita la escritura,
compilación y depuración de la programación. Ayuda a crear código reutilizable
y programas modulares (Beilharz et al., 2016).
JAVA
es un lenguaje de programación orientado a objetos y basado en clases y está
diseñado para tener la menor cantidad posible de dependencias de
implementación. Un lenguaje de programación de propósito general hecho para que
los desarrolladores escriban una vez y se ejecuten en cualquier lugar que esté
compilado. El código puede ejecutarse en todas las plataformas que admiten. Las
aplicaciones se compilan en un código de bytes que se puede ejecutar en
cualquier máquina virtual de JAVA. La sintaxis es similar a C/C++.
La
historia de JAVA es muy interesante, es un lenguaje de programación creado en
1991. James Gosling, Mike Sheridan y Patrick Naughton, un equipo de ingenieros
de Sun conocido como el equipo Green, inició el lenguaje JAVA en 1991. Sun
Microsystems lanzó su primera implementación pública en 1996 como JAVA 1.0. Proporciona
tiempos de ejecución sin costo en plataformas populares. El compilador JAVA 1.0
fue reescrito en Java por Arthur Van Hoff para cumplir estrictamente con sus
especificaciones. Con la llegada de JAVA 2, las nuevas versiones tenían
múltiples configuraciones construidas para diferentes tipos de plataformas
(Bettini, 2015).
En
1997, Sun Microsystems se acercó al organismo de estándares ISO y luego
formalizó JAVA, pero pronto se retiró del proceso. En un momento, Sun hizo que
la mayoría de estas implementaciones estuvieran disponibles sin cargo, a pesar
de su estado de software propietario. Sun generó ingresos a través de la venta
de licencias para productos especializados como JAVA Enterprise System.
El
13 de noviembre de 2006, Sun lanzó gran parte de su máquina virtual JAVA como
software gratuito de código abierto. El 8 de mayo de 2007, Sun finalizó el
proceso y puso a disposición todo el código central de su JVM bajo términos de
distribución de fuente abierta (Bettini, L and De Nicola, R, 2015).
Los
principios para crear JAVA fueron simple, robusto, seguro, de alto rendimiento,
portátil, de subprocesos múltiples, interpretado, dinámico, etc. James Gosling
en 1995 desarrolló Java, conocido como el padre de Java. Actualmente, se usa en
dispositivos móviles, programación de Internet, juegos, comercio electrónico,
etc.
Después
del nombre OAK, el equipo decidió darle un nuevo nombre y las palabras
sugeridas fueron Silk, Jolt, revolucionario, ADN, dinámico, etc. Todos estos
nombres eran fáciles de deletrear y divertidos de decir, pero todos querían el
nombre para reflejar la esencia de la tecnología. Según James Gosling, JAVA es
uno de los nombres principales junto con Silk, y dado que era un nombre único,
la mayoría de ellos lo prefería (Ciancarini, P; Rossi, D., 2019).
Entre
las principales características de JAVA, a juicio de Ciatto, G; Mariani, S;
Zambonelli, F (2020) destaca que es:
1.
Independiente de la plataforma, es decir, el
compilador convierte el código fuente en código de bytes y luego la JVM
ejecuta el código de bytes generado por el compilador. Este código de bytes
puede ejecutarse en cualquier plataforma, ya sea Windows, Linux, macOS, lo que
significa que, si compilamos un programa en Windows, podemos ejecutarlo en
Linux y viceversa. Cada sistema operativo tiene una JVM diferente, pero la
salida producida por todos los sistemas operativos es la misma después de la
ejecución del código de bytes. Es por eso por lo que llamamos a java un
lenguaje independiente de la plataforma.
2.
Lenguaje de programación orientado a objetos:
Organizar el programa en términos de colección de objetos es una forma
de programación orientada a objetos, cada uno de los cuales representa una
instancia de la clase.
Los
cuatro conceptos principales de la programación orientada a objetos son:
-
Abstracción
-
Encapsulación
-
Herencia
-
Polimorfismo
3.
Simple: JAVA es uno de los lenguajes
simples, ya que no tiene características complejas como punteros, sobrecarga de
operadores, herencias múltiples, asignación de memoria explícita.
4.
Robusto: El lenguaje JAVA es robusto, lo que significa confiable. Está
desarrollado de tal manera que se esfuerza mucho en comprobar los errores lo
antes posible, por eso el compilador JAVA es capaz de detectar incluso aquellos
errores que no son fáciles de detectar por otro lenguaje de programación. Las
características principales de Java que lo hacen robusto son la recolección de
basura, el manejo de excepciones y la asignación de memoria.
5.
Seguro: En JAVA no tenemos punteros, por
lo que no podemos acceder a matrices fuera de límite, es decir, muestra
ArrayIndexOutOfBound Exception si intentamos hacerlo. Es por eso por lo que
varias fallas de seguridad como la corrupción de la pila o el desbordamiento
del búfer son imposibles de explotar.
6.
Distribuidas: Podemos crear
aplicaciones distribuidas utilizando el lenguaje de programación JAVA. La
invocación de métodos remotos y Enterprise Java Beans se utilizan para crear
aplicaciones distribuidas. Los programas se pueden distribuir fácilmente en uno
o más sistemas que están conectados entre sí a través de una conexión a
Internet.
7.
Subprocesos múltiples: JAVA admite
subprocesos múltiples. Es una característica que permite la ejecución
simultánea de dos o más partes de un programa para la máxima utilización de la
CPU.
8.
Portable: Como sabemos, el código JAVA
escrito en una máquina se puede ejecutar en otra máquina. La característica
independiente de la plataforma en la que su código de bytes independiente de la
plataforma se puede llevar a cualquier plataforma para su ejecución hace que
Java sea portátil.
9.
Alto rendimiento: La arquitectura de JAVA se define de tal manera que reduce la
sobrecarga durante el tiempo de ejecución y, en algún momento, usa el
compilador Just In Time (JIT), donde el compilador compila los conceptos
básicos de código bajo demanda donde solo compila los métodos que son llamado
hacer que las aplicaciones se ejecuten más rápido.
10.
Flexibilidad dinámica: JAVA, al estar completamente orientado a objetos, nos
brinda la flexibilidad de agregar clases, nuevos métodos a las clases
existentes e incluso crear nuevas clases a través de subclases, incluso admite
funciones escritas en otros lenguajes como C, C++, que se conocen como métodos
nativos.
11.
Ejecución de Sandbox: Los programas JAVA se ejecutan en un espacio separado que
permite al usuario ejecutar sus aplicaciones sin afectar el sistema subyacente
con la ayuda de un verificador de bytecode. El verificador de código de bytes
también proporciona seguridad adicional, ya que su función es verificar el
código en busca de cualquier violación de acceso.
12.
Escribir una vez y ejecutar en cualquier lugar: Como se discutió anteriormente,
la aplicación JAVA genera un archivo '.class' que corresponde a nuestras
aplicaciones (programa) pero contiene código en formato binario. Proporciona
facilidad de arquitectura neutral, ya que el código de bytes no depende de
ninguna arquitectura de máquina. Es la razón principal por que se usa en la
industria de TI emprendedora a nivel mundial.
13.
Poder de compilación e interpretación: La mayoría de los lenguajes están
diseñados con un propósito, ya sea que sean lenguajes compilados o que sean
lenguajes interpretados. Pero JAVA integra un enorme poder que surge a medida
que el compilador de JAVA compila el código fuente en un código de bytes y JVM
ejecuta este código de bytes en el código ejecutable dependiente del sistema
operativo de la máquina.
Los
subprocesos o hilos, por su parte, permiten que un programa funcione de manera
más eficiente al hacer varias cosas al mismo tiempo. Los subprocesos se pueden
utilizar para realizar tareas complicadas en segundo plano sin interrumpir el
programa principal (Custodio, JF and Cunha, JC, 2014).
Conceptualmente,
la noción de hilo o subproceso no es difícil de comprender: es una ruta de
ejecución independiente a través del código del programa. Cuando se ejecutan
varios subprocesos, la ruta de un subproceso a través del mismo código
generalmente difiere de los demás. Por ejemplo, suponga que un subproceso
ejecuta el código de bytes equivalente a la parte if de una instrucción
if-else, mientras que otro subproceso ejecuta el código de bytes equivalente a
la parte else. ¿Cómo realiza la JVM un seguimiento de la ejecución de cada
hilo? La JVM le da a cada hilo su propia pila de llamadas a métodos. Además de
rastrear la instrucción de código de bytes actual, la pila de llamadas al
método rastrea las variables locales, los parámetros que la JVM pasa a un
método y el valor de retorno del método.
Cuando
varios subprocesos ejecutan secuencias de instrucciones de código de bytes en
el mismo programa, esa acción se conoce como hilos múltiples. El hilo múltiple
beneficia a un programa de varias maneras (De Nicola, R and Loreti, M, 2018):
·
Los programas basados en GUI
(interfaz gráfica de usuario) multiproceso siguen respondiendo a los usuarios
mientras realizan otras tareas, como repaginar o imprimir un documento.
·
Los programas con subprocesos
normalmente terminan más rápido que sus homólogos sin subprocesos. Esto es
especialmente cierto en el caso de los subprocesos que se ejecutan en una
máquina multiprocesador, donde cada subproceso tiene su propio procesador.
A
diferencia de muchos otros lenguajes informáticos, JAVA proporciona soporte
integrado para subprocesos múltiples. El subproceso múltiple en JAVA contiene
dos o más partes que pueden ejecutarse al mismo tiempo. Se plantea el siguiente
ejemplo:
Imagine
una aplicación de corredor de bolsa con muchas capacidades complejas. Estas son
algunas de sus funciones (Drejhammar, F;
Schulte, C; Brand, P; Haridi, S, 2013):
Para descargar los últimos precios de opciones sobre
acciones
Para comprobar los precios de las advertencias
Analizar datos históricos de la empresa XYZ
Estas
son funciones que requieren mucho tiempo. En un entorno de ejecución de un solo
subproceso, estas acciones se ejecutan una tras otra. La siguiente acción puede
suceder solo cuando finalice la anterior.
Ahora
bien, si un análisis histórico lleva media hora y el usuario selecciona
realizar una descarga y una verificación después, la advertencia puede llegar
demasiado tarde para comprar o vender acciones como resultado. Simplemente
imaginamos el tipo de aplicación que pide a gritos el multihilo. Idealmente, la
descarga debería ocurrir en segundo plano (es decir, en otro hilo). De esa
forma, podrían ocurrir otros procesos al mismo tiempo para que, por ejemplo, se
pudiera comunicar una advertencia al instante. Mientras tanto, el usuario
interactúa con otras partes de la aplicación. El análisis también podría
ocurrir en un hilo separado, por lo que el usuario puede trabajar con el resto
de la aplicación mientras se calculan los resultados. Aquí es donde ayuda el
hilo de Java (Eugster, P, 2017).
Un
hilo es en realidad un proceso ligero. A diferencia de muchos otros lenguajes
informáticos, JAVA proporciona soporte integrado para programación
multiproceso. Un programa multiproceso contiene dos o más partes que pueden
ejecutarse al mismo tiempo. Cada parte de dicho programa se llama subproceso y
cada subproceso define una ruta de ejecución separada. Por lo tanto, el
subproceso múltiple es una forma especializada de multitarea (Fahringer, T and
Jugravu, A., 2015).
El
sistema de ejecución de JAVA depende de hilos para muchas cosas. Los hilos o
subprocesos reducen la ineficiencia al evitar el desperdicio de ciclos de CPU.
Existen hilos en varios estados. Los siguientes son esos estados:
·
Nuevo: Cuando creamos una
instancia de la clase Thread, un hilo está en un nuevo estado.
·
Ejecutable: El subproceso de JAVA
está en estado de ejecución.
·
Suspendido: Un hilo en
ejecución se puede suspender, lo que suspende temporalmente su actividad.
Luego, se puede reanudar un hilo suspendido, lo que le permite continuar donde
lo dejó.
·
Bloqueado: Un subproceso de JAVA
se puede bloquear cuando se espera un recurso.
·
Terminado: Un hilo se puede
terminar, lo que detiene su ejecución inmediatamente en cualquier momento. Una
vez que se termina un hilo, no se puede reanudar (Hijma, P; van Nieuwpoort, RV;
Bal, HE, 2012).
El
sistema de subprocesos múltiples de JAVA se basa en la clase Thread, sus
métodos y su interfaz complementaria, Runnable. Para crear un nuevo hilo, su
programa extenderá el hilo o implementará la interfaz Runnable (Linden, I;
Jacquet, JM; (...); Brogi, A, 2016).
La
investigación en torno a JAVA en general y los subprocesos en específico,
pareciera no ser tan prolífica como la de otros campos de la ciencia. Este
artículo ahonda en esa circunstancia.
2. MATERIALES Y MÈTODOS
Estrategias de búsqueda
Se
realizaron búsquedas en publicaciones sobre la investigación de JAVA en enero
de 2021 mediante el uso de la base de datos ampliada Science Citation Index de
Web of Science Core Collection (WoSCC). Los términos de búsqueda que se
utilizaron fueron los siguientes: JAVA AND (Thread OR hilos OR subprocesos).
Solo se incluyeron publicaciones anteriores a 2021. Un total de 965 documentos
cumplieron con los criterios de búsqueda, que se aplicaron en este estudio.
Recogida y análisis de datos
Se
exportó el registro completo de datos de WoSCC, incluida la cantidad de
publicaciones anuales; productos de países/regiones, revistas, autores y citas
totales; factor de impacto (IF) en 2019, Journal Citation Reports (JCR) 2019 e
índice de Hirsch (H-index). JCR es una base de datos que sirve como base para
Journal Impact Factor (JIF), que es una herramienta de evaluación de revistas
que puede reflejar el impacto y la calidad de las revistas. Y el índice H
significa que H artículos publicados por un autor o un país/región han sido
citados al menos H veces, y cada uno de los artículos restantes ha sido citado
menos o igual a H veces. Se puede utilizar para evaluar la cantidad y el nivel
de producción académica de investigadores o países/regiones.
Luego,
se importaron los datos a Microsoft Excel 2019, VOSviewer y CiteSpace 5.7. R2
para un análisis más detallado. Se utilizó Microsoft Excel 2019 para crear un
gráfico de tendencias de cambios en el volumen de documentos publicados cada
año, citas por artículo, número total de citas e índice H de los diez
países/regiones principales y proporcionar una tendencia de desarrollo
intuitiva en este campo.
Se
determinó la importancia de un artículo con base en el supuesto de que los
artículos muy citados pueden tener un mayor impacto en la literatura
científica. Co-citación significa que dos artículos (o autores) relacionados
son citados por el tercer artículo (o autor) al mismo tiempo. Los artículos con
un tema común tienden a formar grupos alrededor del mismo par de artículos
cocitados, destacando así su importancia y relevancia (Luc Moreau, 2017).
Se
aplicó VOSviewer para analizar la cocitación de revistas y autores. VOSviewer
puede proporcionar datos de revistas cocitadas, autores, referencias y sus
citas, de modo que reflejen la relación cooperativa y las relaciones académicas
junto con el mapa de visualización creado por CiteSpace.
Se
empleó CiteSpace para visualizar colaboraciones entre países/regiones,
organizaciones y autores y realizar análisis de cocitación de autores, revistas
y referencias. Además, se exploró los cambios en las direcciones y tendencias
de la investigación mediante la creación de una vista de línea de tiempo de la
referencia cocitada. Para explorar mejor los puntos críticos de investigación, se
usó CiteSpace para capturar palabras clave con fuertes ráfagas de citas y se construyó
un mapa de visualización.
3.
RESULTADOS
En
este artículo, se utilizó visualización de información para analizar artículos
originales sobre threads o hilos, de la base de datos Web of Science (WOS) de
2012 a 2020. Un total de 965 publicaciones cumplieron con los criterios de
búsqueda. En los primeros 4 años (2012-2015), la producción anual de
publicaciones se mantuvo en un nivel bastante bajo, pero aumentó drásticamente
desde 2016 y alcanzó un pico en 2020 con 550 (Figura 1A). Mediante ajuste de
modelos hemos obtenido una curva de crecimiento del volumen de publicaciones
cada año. Sobre la base de esta curva, se concluyó que los subprocesos están a
punto de convertirse en un tema cada vez más importante.
Figura 1.
Producción de publicaciones anuales y por países
Vale
la pena señalar que la producción anual de publicaciones incluso ha aumentado
exponencialmente en los últimos 3 años. Revela que la investigación de los
hilos se está desarrollando rápidamente y que la atención ha ido en aumento en
el campo de la computación, que se espera que se convierta en un tema candente
en el futuro. El artículo publicado por Martin, D; Wutke, D and Leymann, F
(2015), que confirmaba que los subprocesos representan quizás lo más
significativo de JAVA. Este artículo se considera la pieza más importante y
fundamental, que es pionera en la investigación en este campo (Dixon et al.,
2012). Además, Pittarello, F (2014) publicó una revisión en las revisiones de CompScience,
con el IF alto (34.1060), el 29 de enero de 2021. Esta revisión presenta las
estructuras de los subprocesos aplicadas a diversos campos.
Análisis de país/región e
institución
La
publicación relacionada con los subprocesos fue publicada por primera vez por
académicos estadounidenses en 2012, que fue el único artículo de investigación
en ese momento. Su investigación está por delante de los investigadores en
todas las regiones del mundo. Todas las publicaciones en el campo se
distribuyeron entre 1.169 instituciones de 59 países/regiones, de las cuales la
República Popular China ocupó el primer lugar con 437 (45,28 %) documentos con
diferencia, seguida por Estados Unidos (310, 32,12 %). Alemania (90, 9,33%),
Japón (80, 8,29%) y Francia (47, 4,87%) (Tabla 1). A través del análisis de
cambios en el volumen anual de documentos emitidos de los 10 países/regiones
más productivas (Figura 1B), se puede concluir que la tendencia general en el
número anual de documentos publicados por esos países mostró un aumento similar
a partir de 2012.
En
una comparación horizontal, el número de publicaciones anuales de China ha sido
menor que el de los Estados Unidos en los primeros 6 años, pero la brecha se ha
reducido gradualmente. Y en 2018, el número de publicaciones anuales de China
superó al de Estados Unidos y se convirtió en el primero. Aunque la producción
total de investigación de países como Alemania, Japón, Francia e Italia es
inferior a la de China y Estados Unidos, también ha habido un crecimiento
significativo en los últimos años. Obviamente, una de las razones más
importantes es la estrecha y amistosa cooperación entre los diferentes países. El
análisis del mapa de visualización de la red CiteSpace de países/regiones
(Figura 2) mostró que existe una cooperación muy fuerte entre los Estados
Unidos y China, lo que ha impactado significativamente la tendencia de
investigación de los subprocesos.
Tabla
1. Principales países por artículos y citas
Rank |
Countries/regions |
Articles (N) |
Percentage (N/965 |
H-index |
Citations per article |
Sum of times cited |
1 2 3 4 5 6 7 8 9 10 |
China United States Germany Japan France Italy South Korea Australia Canada England |
437
310
90 80 47 34 32 30 26 25 |
45.28
32.12
9.33
8.29
4.87
3.52
3.32
3.11
2.69
2.59 |
48
64
31
23
20
11
14
14
14
12 |
24.51
64.33
64.38
54.81 57.68
42.44
23.19
87.00
71.96
69.40 |
10,712
19,942
5,794
4,385
2,711
1,443
742
2,610 1871 1735 |
Cuando
se trata de la suma de las veces citadas y las citas por artículo, las cosas
son totalmente diferentes (Figura 1C y Tabla 1). EE. UU. tuvo 19 942 citas y un
índice H de 64, los cuales ocuparon el primer lugar entre todos los
países/regiones incluidos, pero su proporción de citas/artículo (64,33) fue
menor que la de Canadá (71,96), Inglaterra (69,4) y Alemania. (64.38). Como el
país o las regiones más productivas en relación con los subprocesos en la
investigación sobre JAVA, China tuvo una proporción relativamente baja de citas
por artículo (24,51) en comparación con los demás países de la tabla.
Para
explorar la cooperación internacional e interinstitucional, construimos un mapa
de visualización de redes para publicaciones sobre la investigación de los
subprocesos por CiteSpace. La Figura 2A muestra colaboraciones entre
países/regiones que cumplen el criterio de búsqueda (58). Los países marcados
con círculos morados, incluidos Alemania (0,37), Estados Unidos (0,30) y la
República Popular China (0,28) tienen la centralidad de intermediación más
fuerte, lo que significa que jugaron un papel clave en la colaboración
internacional. La conexión entre nodos representa la relación de cooperación
entre países, y el ancho de la conexión representa la fuerza de la cooperación.
Alemania tuvo la centralidad de intermediación más alta, y los países/regiones
que más colaboraron con Alemania fueron Camerún, Japón y Australia. Además, la
República Popular de China colaboró más con EE. UU., Suiza y Francia.
Figura 2. Colaboraciones
de instituciones entre países y regiones
Las
10 instituciones más productivas en investigación relevante se muestran en la
Tabla 2. Las instituciones líderes fueron University of Texas System
(51,5,28%), Columbia University en la ciudad de Nueva York (44,4,56%), Central
South University (42,4,35%), Guangzhou University (42,4,35%) y Asociación
Helmholtz (39, 4,04%). Las colaboraciones entre instituciones se muestran
claramente en la Figura 2B. La Universidad de Columbia en la ciudad de Nueva
York, la Academia de Ciencias de China, la Universidad Central del Sur y la
Universidad de Pittsburgh tienen una fuerte centralidad de intermediación.
Además, se puede ver claramente que la cooperación entre las instituciones
americanas es extremadamente activa y cercana, con cinco instituciones entre
las 10 instituciones con mayor producción de publicaciones. Las ventajas
regionales se han aprovechado superlativamente en gran medida, fortaleciendo la
influencia académica de los Estados Unidos en este campo.
Tabla
2. Diez
importantes instituciones de investigación
Rank |
Institutions |
Articles (N) |
Percentage (N/965) |
Location |
1 2 3 4 5 6 7 8 9 10 |
Univ of Texas
System Columbia Univ Cent S Univ Guangzhou Med
Univ Helmholtz
association Inserm Pcshe Chinese Acad Sci Univ of
Pittsburgh Ut SouthWestern |
51
44
42
42
39
39
38
35
35
28 |
5.28
4.56
4.35
4.35
4.04
4.04
3.94
3.63
3.63
2.90 |
United States United States China China Germany France United States China United States United States |
Análisis de palabras clave
Se
usó VOSviewer para analizar las palabras clave y se formó tres grupos. Al mismo
tiempo, para analizar la cercanía de la relación entre diferentes temas, se usó
CiteSpace para crear un mapa de co-ocurrencia de palabras clave. El tamaño de
los nodos refleja la frecuencia de las palabras clave, y el ancho de las líneas
representa la frecuencia de la coexistencia de dos palabras clave. Las palabras
clave, como JAVA, subprocesos y programación, tienen una fuerte centralidad de
intermediación. Es obvio que el mecanismo de los subprocesos siempre ha sido el
punto caliente de la dirección de investigación.
4.
CONCLUSIONES
Los
subprocesos con hilos de JAVA son importantes en procesos interactivos y en
segundo plano con elementos asincrónicos y de estructura modular que aceleran
la ejecución en hilos a nivel de usuarios y del Kernel en diversas aplicaciones
de áreas comerciales y científicas.
El
conocimiento y comprensión de los subprocesos ha mejorado significativamente a
través de un estudio serio de los artículos anteriores de alta calidad. Según
la búsqueda, este artículo es el primer análisis bibliométrico basado en los
resultados de CiteSpace y VOSviewer para estudiar las tendencias de
investigación y los puntos calientes de los subprocesos en la programación con
JAVA. Cada vez más estudios han demostrado que los subprocesos resultan fundamentales
en la programación actual.
Además,
los subprocesos también están relacionados con la optimización de los procesos
en diversidad de áreas del conocimiento (Rossi, G; Panegai, E and Poleo, E,
2015). A partir del estallido de citas detectado, se pudo encontrar que la
aplicación complementaria de los subprocesos en la programación es una
tendencia emergente. Con la ayuda de la visualización de información, es
posible identificar las prioridades de investigación y las tendencias generales
en el campo, y poner la información recopilada a disposición de los
investigadores en este campo. A través de una mayor exploración del mecanismo
de los subprocesos, se espera que se proporcionen nuevas ideas de análisis y
organización de la información.
REFERENCIAS
Beilharz, J; Feinbube, F; (...); Polze, A (2016). Claud:
Coordination, Locality and Universal Distribution. Parallel computing: on the
road to exascale 27, pp.605-614.
Bettini, L. (2015). Data Privacy in Tuple Space Based
Mobile Agent Systems. Electronic notes in theoretical computer science 128 (5),
pp.3-16.
Bettini, L and De Nicola, R (2015). Mobile distributed
programming in X-KLAIM. Formal methods for mobile computing 3465, pp.29-68.
Ciancarini, P; Rossi, D.
(2019). Java: Coordination and communication for Java agents. Lecture
Notes in Computer Science.
Ciatto, G; Mariani, S; (...); Zambonelli,
F (2020). Twenty years of coordination technologies: Coordination contribution
to the state of art. journal of logical and algebraic methods in programming
113.
Custodio, JF and Cunha, JC (2014). JGroupSpace:
Combining Shared Spaces and Groups. Proceedings of the 2009 international
symposium on collaborative technologies and systems, pp.284-291.
De Nicola, R and Loreti, M (2018). Modelling
global computations with KLAIM. Philosophical transactions of the royal society
a-mathematical physical and engineering sciences 366 (1881), pp.3737-3745.
Drejhammar, F; Schulte, C; Brand, P; Haridi, S
(2013). Flow Java: Declarative concurrency for Java. Cconcurrency
and computation-practice & experience 27 (17), pp.4716-4740.
Eugster, P (2017). Type-based publish/subscribe:
Concepts and experiences. ACM transactions on programming languages and systems
29 (1).
Fahringer, T and Jugravu, A. (2015). JavaSymphony: a new programming paradigm to control and
synchronize locality, parallelism and load balancing
for parallel and distributed computing. Concurrency and computation-practice
& experience 17 (7-8), pp.1005-1025.
Hijma, P; van Nieuwpoort, RV; Bal, HE (2012). Generating
synchronization statements in divide-and-conquer programs. Parallel computing
38 (1-2), pp.75-89.
Linden, I; Jacquet, JM; (...); Brogi,
A (2016). On the expressiveness of timed coordination models. Science of
computer programming 61 (2), pp.152-187.
Luc Moreau (2017). Formalizing the safety of Java, the
Java virtual machine, and Java card. ACM Computing Surveys.
Martin, D; Wutke, D and Leymann, F (2015). Tuplespace
middleware for Petri net-based workflow execution. International journal of web
and grid services 6 (1), pp.35-57.
Pittarello, F (2014). The time-pillar world - A 3D paradigm for
the New Enlarged TV information domain. Personalized digital television:
targeting programs to individual viewers, pp.287-320.
Rossi, G; Panegai, E and Poleo, E (2015). JSetL: a Java
library for supporting declarative programming in Java. Software-practice &
experience 37 (2), pp.115-149.