Com millorar el rendiment de les aplicacions Java en 9 passos

Viure a l’era digital és tant una benedicció com una frustració. Quan els ordinadors i les aplicacions funcionen sense problemes, solem donar-los per descomptat. Però quan un ordinador es congela o una aplicació es tanca un ordinador portàtil o un dispositiu mòbil, el mal rendiment augmenta l’estrès.


Tant si sou un desenvolupador que té accés al codi font com si simplement un usuari final intenta accelerar una aplicació Java lentament irritant, tenim bones notícies: hi ha passos que podeu fer per millorar el rendiment.

Java és el mateix que JavaScript?

En definitiva, no; Java i JavaScript són dues tecnologies completament diferents. Tot i que són ambdues tecnologies orientades a objectes, Java és un entorn de desenvolupament en el qual els programadors poden codificar aplicacions dissenyades per funcionar localment a la memòria del sistema..

JavaScript, per la seva banda, va ser dissenyat per crear aplicacions web i sovint coincideix amb altres tecnologies web com HTML i CSS. Avui, veurem les millors maneres de millorar el rendiment de les aplicacions escrites en Java, però no de JavaScript.

Causes del mal rendiment de l’aplicació

Les causes d’una aplicació amb poc rendiment són àmplies, tot i que les causes principals són un petit grapat de problemes. Naturalment, les dues primeres causes són el mal disseny i la codificació sub-par.

Tot i que els IDE i els editors de codis posen de manifest els objectes de prova i objectes per fer-los més llegibles per a humans, hi ha un buit de comunicació entre ordinadors i humans. Cometreu errors quan creeu una aplicació, no hi ha cap sentit al voltant.

De vegades, l’ordinador no entén la vostra intenció. Més aviat, només realitza les instruccions que es donen. A més dels defectes algorítmics i de codificació, les deficiències de recursos són una altra causa habitual.

El maquinari local com la RAM i els cicles de CPU afecten el rendiment de l’aplicació, igual que altres recursos com l’ample de banda de xarxa. A més, tingueu en compte que els problemes del sistema operatiu local sovint afecten el rendiment de l’aplicació.

Com millorar el rendiment de les aplicacions Java: 9 passos

Abans de aprofundir en cada pas específic, volíem oferir una visió general de gran nivell sobre com millorar el rendiment de les aplicacions Java, de la següent manera:

  1. Realitza proves de perfil i càrrega : La perfilació de la vostra aplicació Java us ajudarà a descobrir punts de dolor i colls d’ampolla.
  2. Netegeu el codi i reviseu els algorismes – el codi net és més fàcil de mantenir, editar, llegir i perfeccionar; revisar els algorismes redueix les trucades de funció tautològica.
  3. Eviteu la recursió quan sigui possible – La recursió és un mal necessari en alguns casos, tot i que s’ha d’utilitzar amb moderació.
  4. Actualitza el maquinari del sistema – el mal funcionament de l’aplicació pot no estar arrelat en codis i algorismes pobres; en canvi, la causa subjacent podria estar relacionada amb el sistema que executa l’aplicació.
  5. Augmenta l’amplada de banda LAN i WAN – no totes les funcions interactuen amb el maquinari local; si la vostra aplicació parla amb sistemes remots, pot ser que la seva infraestructura de xarxa sigui culpable.
  6. Posar a punt el vostre sistema operatiu – els sistemes operatius desordenats necessiten manteniment per poder executar aplicacions al màxim.
  7. Feu servir StringBuilder per millorar l’eficiència – les cadenes són gairebé inevitables en la majoria de les aplicacions, però l’operació “+ =” és altament ineficient.
  8. Explota la memòria cau per millorar el rendiment – la memòria cau és una de les millors maneres de reduir la instància i l’obtenció de funcions redundants.
  9. Afegiu la pila a sobre del munt – la pila és més eficient pel que fa als recursos del sistema, ja que es manté i allibera la memòria que ocupen els objectes defectuosos.

Amb això, aprofundirem en cada mètode per millorar el rendiment de les aplicacions Java.

1. Realitza proves de perfil i càrrega

El primer pas per millorar el rendiment de les aplicacions Java és identificar àrees per millorar. Sense saber on es troben els problemes més grans, intentar agilitzar una aplicació és com llançar un dard a un tauler de teclat mentre està amb els ulls embenats. Afortunadament, hi ha eines de programari que recopilen dades sobre el rendiment de l’aplicació.

La primera eina que recomanem utilitzar és un programari de perfil Java. Un d’aquest exemple és YourKit, que és una solució adequada tant a empreses com a usuaris individuals. YourKit ofereix una varietat de llicències com opcions empresarials, acadèmiques, de codi obert i per seient.

Les seves característiques inclouen, però no es limiten a, les següents:

  • Perfil del rendiment de la CPU
  • Perfil de rendiment de memòria
  • Detecció de fuites de memòria
  • Anàlisi de fils i sincronització
  • Proves de rendiment web, base de dades i E / S

Aquesta eina va ser dissenyada per ser utilitzada en sistemes locals, sistemes remots, projectes actualment en desenvolupament i fins i tot en programari de producció. YourKit no és l’únic perfeccionador de Java de qualitat, però té una forta competència d’altres solucions com ara EJ-Technologies, que va crear el JProfiler.

Aquesta eina és molt similar a YourKit i ofereix opcions de prova de sessions locals i remotes, desencadenants fora de línia, comparacions d’instantànies, seguiment de sol·licituds (HTTP, RMI, servei web, EJB, esdeveniments AWT, inicis de fil, etc.) i creació de sondes personalitzades entre moltes altres funcions. Finalment, JProfiler també té eines de perfil de maquinari, thread, telemetria i base de dades.

2. Netegeu el codi i reviseu els algorismes

El codi font del programari és com el primer esborrany d’una novel·la, mai no es perfecciona després de la primera iteració i requereix revisions importants abans de ser polit. En primer lloc, heu d’esforçar-vos per escriure un codi net que estigui saturat de comentaris perquè pugueu navegar pel vostre text i recordar fàcilment per què s’inicialitzava cada objecte i per què s’anomenava cada funció..

Tot i que el vostre codi net es manté pel seu propi compte d’acceleració d’una aplicació Java, però, l’ajudarà a podar el codi innecessàriament més eficient i a buscar punts febles i redundància dels algorismes. El codi net fa que el procés de depuració sigui més suau i us ajudi a corregir els errors (com ara les fuites de memòria) que heu identificat després de perfilar i carregar el vostre programari.

3. Eviteu la recursió quan sigui possible

La recursió és una estratègia de programació bàsica en què una funció es diu per resoldre un problema. La recursió no és necessàriament dolenta, però és una espasa de doble tall. Té beneficis i usos pràctics. Per exemple, la recursió fa que el codi sigui més net i compacte i redueix les iteracions tautològiques de bucles i funcions.

Com que la recursió redueix la complexitat i el volum del codi, ajuda a mantenir una aplicació Java més fàcil de mantenir. Malauradament, aquests avantatges provenen del preu del rendiment de l’aplicació. Les trucades de recurs i de funció són cares pel que fa a la velocitat i el rendiment perquè requereixen funcions pop i push a la pila.

Una solució més eficient per a la recurrència, en canvi, és el looping. És possible que les operacions de bucle siguin més difícils de llegir i estiguin compostes per més caràcters i codi font que la recursió, però són preferibles quan s’ha de maximitzar el rendiment de l’aplicació. Pot ser que no sempre sigui pràctic renunciar al recurs, però mitigar-lo tant com sigui possible ajudarà a millorar el rendiment de les aplicacions Java.

4. Actualitzeu el maquinari del sistema

A la superfície, pot semblar que una aplicació Java amb un rendiment baix ha d’ésser causada per un problema de programari. Tot i que pugui semblar contra-intuïtiu, la causa fonamental del mal rendiment pot ser un problema de maquinari. Tant si teniu una aplicació Java localment com de manera remota, el sistema amb el qual s’executa l’aplicació Java pot no tenir recursos del sistema suficients per executar el codi satisfactòriament..

La memòria RAM és el component més fàcil d’actualitzar que afecta generalment directament al programari. En ampliar la quantitat de memòria del vostre equip, reduireu la possibilitat que el sistema es quedi sense espai d’emmagatzematge per a les dades de l’aplicació i es vegi obligat a tornar a utilitzar el disc dur com a RAM improvisada. Aquesta pràctica es coneix com a fitxer de pàgines i, tot i que té usos pràctics, els fitxers de pàgines són més indesitjables per a aplicacions d’alt rendiment que la memòria RAM, ja que el procés de lectura i escriptura és significativament més lent en un disc dur.

A més, si l’aplicació Java interactua significativament amb el disc dur (com ara una còpia de seguretat de dades o una aplicació de sincronització), l’actualització del disc dur pot millorar el rendiment del sistema. Per exemple, podeu actualitzar a una unitat amb RPM més altes per a procediments de lectura i escriptura més ràpids. Tanmateix, tingueu en compte que els discos durs més ràpids són SSD (Solid State Drives) i no contenen peces mòbils. Per últim, alguns sistemes, però no tots, són capaços d’expandir la CPU també, tot i que no és tan fàcil actualitzar com la RAM.

5. Augmenteu l’amplada de banda LAN i WAN

Tot i que el maquinari local i del servidor és un component clau de les aplicacions Java (incloses les aplicacions web Java), no és l’únic coll d’ampolla potencial. Tant si teniu aplicacions web Java localment en una LAN, en una intranet o a distància, l’amplada de banda juga un paper crucial pel que fa a la disponibilitat i el rendiment de les vostres aplicacions, especialment en moments de càrrega màxima..

En general, l’amplada de banda LAN és generalment abundant i barata, mentre que l’amplada de banda WAN és costosa i en poca oferta. No obstant això, és possible que un altre trànsit LAN agrupi la xarxa local a la qual està connectat el servidor que executa aplicacions web Java. Aquest problema es pot tractar d’una de les dues maneres.

Primer, podeu optar per actualitzar els commutadors i la infraestructura de xarxa local a una solució Gigabit Ethernet o 10Gigabit Ethernet per alleujar la congestió de la xarxa. Alternativament, podeu implementar una política de QoS (Qualitat del servei) que prioritzi el trànsit cap a i des del servidor que allotja aplicacions Java per sobre d’altres tipus de trànsit..

A més, a més d’augmentar l’ample de banda WAN (que pot requerir la selecció d’un ISP diferent), podeu implementar un equilibri de càrrega per aprofitar millor les connexions ISP redundants. Recordeu que les aplicacions de Java amb un bon funcionament poden no ser necessàriament causades per problemes de programari i es poden veure afectades per la congestió de la xarxa.

6. Actualitzeu el sistema operatiu

Els sistemes operatius requereixen la neteja i el manteniment per funcionar al màxim rendiment i utilitzar eficientment els recursos del sistema. Un sistema operatiu no descentrat té la tendència a frenar i a sentir-se lent. Per exemple, és possible que tingueu molts processos invisibles executats en un fons del qual ni sabíeu.

A més, el procediment d’instal·lació de moltes aplicacions afegeix automàticament nou programari a la llista d’aplicacions que s’inicien des de l’inici. Aquestes aplicacions no només fan que un sistema s’iniciï més lentament, sinó que també posseeixen recursos vitals del sistema com la RAM i els cicles de CPU que d’altra manera es podrien utilitzar per executar una aplicació Java.

La poda i el procés i les aplicacions necessàries i indesitjables us ajudaran a ordenar el vostre sistema operatiu, ja que funcionarà un netejador de registre als sistemes Windows. Un netejador del registre pot mitigar i eliminar els errors de DLL i els errors d’execució eliminant entrades errònies al registre i regenerant estructures d’índexs.

A més, una altra tasca de neteja (que s’ha d’utilitzar amb moderació) és la desfragmentació del disc dur. Amb el pas del temps, a mesura que els fitxers s’escriuen i se suprimeixen contínuament del disc dur, poden convertir-se en un embolic caòtic. Una eina desfragmentada arrodona totes les vostres dades i les reescriu en blocs contigus, fet que redueix el temps perquè el disc dur llegeixi informació.

Però tingueu en compte: el procés de desfragmentació és molt exigent i tributa al disc dur. Si el desfragmenteu diàriament, setmanalment o fins i tot mensualment, reduireu dràsticament la vida útil del vostre disc dur. Una freqüència més raonable i pràctica és d’entre dues o tres vegades a l’any.

7. Feu servir StringBuilder per millorar l’eficiència

Les cadenes són un tipus de dades freqüent a la gran majoria d’aplicacions: són prou difícils d’evitar o ignorar. Malauradament, la concatenació per cordes és tan ineficient com freqüent. Pot semblar que la millor manera de concatenar les cadenes és amb l’operació “+ =”, però es tracta d’una operació en excés que és ineficientment ineficient.

El problema és que l’operació “+ =” assigna una cadena completament nova cada vegada que s’utilitza, cosa que pot crear moltes dades de cadenes redundants i innecessàries. Tot i que ara utilitzant aquesta operació de tant en tant no farà que l’aplicació Java s’acabi, cada petita operació s’afegeix. Imagina’t quantes vegades es pot augmentar aquesta ineficiència en un bucle?

Afortunadament, hi ha una alternativa més eficient. El StringBuilder l’objecte va ser dissenyat com una alternativa eficient a les operacions bàsiques de concatenació. Afegeixi l’hàbit d’utilitzar aquest tipus de dades en lloc d’utilitzar l’escorcollet mandrós de l’operació “+ =” si voleu millorar el rendiment de les aplicacions Java.

8. Explotar la memòria cau per millorar el rendiment

La memòria cau és una de les maneres més efectives d’augmentar l’eficiència de les aplicacions Java. El concepte bàsic de la memòria cau és consolidar múltiples trucades i funcions en un recurs reutilitzable. Tot i que hi ha moltes formes de memòria cau, quan la majoria de persones aquí tenen la paraula “caching”, el primer que em sorprèn és la tecnologia de bases de dades..

No només les dades que hi ha dins d’una base de dades es poden almacenar en memòria cau localment per conservar l’ample de banda, sinó que també es pot produir l’elevat volum de connexions de bases de dades que d’altra manera alentirien una aplicació. No obstant això, tingueu en compte que la memòria cau no s’ha d’utilitzar en excés. Es pot pensar que de manera intuïtiva tot s’hauria d’amagar a la memòria cau en cas que necessiteu tornar a utilitzar-lo en un futur proper. Tanmateix, us heu de assegurar que les dades i les connexions que emmagatzemeu a la memòria cau són prou nombroses com per obtenir un rendiment en el rendiment.

9. Afavoriu la pila sobre el munt

Per millorar el rendiment de l’aplicació Java, emmagatzemi les dades a la pila en lloc del grup. Perque preguntes? Perquè utilitza la memòria de manera més eficient i elimina les dades que ja han complert la seva finalitat. No només la pila utilitza els recursos de manera més eficaç, sinó que també es manté a l’aigua. La millor manera d’afavorir la pila sobre el munt és evitar les instàncies de clàssiques d’embolcall.

De la mateixa manera que l’ús de la recursió, no sempre és factible (ni tan sols possible) renunciar a l’ús d’una classe d’embolcall. Però, com a regla general, haureu d’utilitzar de manera predeterminada els tipus de dades primitives com “int” en contraposició a Integer. El nombre de guanys de rendiment que podeu obtenir utilitzant aquesta tàctica depèn d’una infinitat de factors. No obstant això, afavorir la pila és una bona guia per trobar el camí cap al codi Java més fluix i eficaç.

Hi ha eines al mercat per ajudar-vos a actualitzar correctament els pedaços de Java. Una d’aquestes eines és SolarWinds Gestor de pegats.

SolarWinds Patch Manager

Podeu descarregar un funcionament complet Prova gratuïta de 30 dies

SolarWinds Patch Manager: descarrega la prova gratuïta de 30 dies

Relacionat: Millors eines de gestió de pedaços

A més, heu de consultar el Eina de control de Java de SolarWinds per a servidors d’aplicacions amb servidor & Monitor d’aplicacions per millorar el rendiment. Podeu descarregar un funcionament complet Prova gratuïta de 30 dies.

Eina de control de Java de SolarWinds per a servidors d’aplicacions amb prova de lliurament de 30 dies de SAMDownload

Pensaments finals

Si una aplicació Java lenta i rastrejada fa que la sang bulli, respireu profundament i recordeu que no us colpegeu els punys al teclat: només empitjorarà els peus. En lloc d’això, respireu profundament i utilitzeu un dels mètodes abans esmentats per accelerar el rendiment de l’aplicació Java.

Si teniu històries personals o anècdotes sobre acceleració d’aplicacions Java, us convidem a fer comentaris a continuació.

Kim Martin
Kim Martin Administrator
Sorry! The Author has not filled his profile.
follow me