Rinnakkaisuus Javassa ja C++:ssa: Rinnakkaisuuden vertaileminen Java ja C++ ohjelmointikielien suhteen
Jussila, Petrus (2022)
Jussila, Petrus
2022
Tieto- ja sähkötekniikan kandidaattiohjelma - Bachelor's Programme in Computing and Electrical Engineering
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2022-03-17
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202203162555
https://urn.fi/URN:NBN:fi:tuni-202203162555
Tiivistelmä
Opinnäytetyössä tuodaan esille kahden eri ohjelmointikielen, Javan ja C++:n, rinnakkaisuuden toteutukset. Huomiota on kiinnitetty erityisesti ohjelmointikielien tehokkuuksiin sekä eroavaisuuksiin. Työn alussa on esitelty, kuinka monisäkeiset prosessorit ovat mahdollistaneet rinnakkaisten prosessien luonnin. Työn ymmärtämiseen tarvittavat rinnakkaisuuden peruskäsitteet, -edellytykset ja toteutukset tuodaan esille ennen rinnakkaisuuden toteutuksien tarkempaa analysointia. Työ sisältää koodipätkiä ohjelmista, jotka sisältävät yksinkertaisia rinnakkaisuuden toteutuksia sekä Java että C++ ohjelmointikielien suhteen. Rinnakkaisuuden tehokkuutta Javassa rajoittaa Javan ajonaikainen ympäristö JRE (Java Runtime Environment). Tämä ympäristö pyörii Javan omassa virtuaalikoneessa nimeltä JVM (Java Virtual Machine), joka antaa JRE:lle käyttöjärjestelmän rajoitteet. C++:ssa tämä tapahtuu ilman välikättä ja ohjelman ajonaikainen kirjasto saa rajoitteet suoraan käyttöjärjestelmältä. Molemmista ohjelmointikielistä puutteita ja hyötyjä löytyy, mutta merkittävin eroa aiheuttava tekijä on JVM. Virtuaalikone kääntää sekä optimoi ohjelmat tavukoodeiksi. C++:ssa tätä sisäänrakennettua optimointia ei ole, joten ohjelmoijan on kiinnitettävä tarkkaa huomiota muun muassa säikeiden luonnissa, jottei esimerkiksi uusien säikeiden ylitilausta tapahtuisi. Java on suunniteltu ohjelmistoalustana, jonka on tarkoitus toimia useilla eri laitteilla. Tämän vuoksi on hyvin tärkeää, että ohjelman oikeanlainen suoriutuminen on varmistettu Javan omalla virtuaalikoneella. C++-ohjelmointikieltä käytettäessä yleensä tarkoituksena on hakea ohjelman tehokasta suoriutumista. Tällöin suora rajoitteiden hakeminen käyttöjärjestelmältä on suositeltua, kun erillistä virtuaaliympäristöä ei aseteta ohjelmalle.
Kokoelmat
- Kandidaatintutkielmat [8314]