40 resultados para Java (Programming Language)
Resumo:
This thesis introduces an extension of Chomsky’s context-free grammars equipped with operators for referring to left and right contexts of strings.The new model is called grammar with contexts. The semantics of these grammars are given in two equivalent ways — by language equations and by logical deduction, where a grammar is understood as a logic for the recursive definition of syntax. The motivation for grammars with contexts comes from an extensive example that completely defines the syntax and static semantics of a simple typed programming language. Grammars with contexts maintain most important practical properties of context-free grammars, including a variant of the Chomsky normal form. For grammars with one-sided contexts (that is, either left or right), there is a cubic-time tabular parsing algorithm, applicable to an arbitrary grammar. The time complexity of this algorithm can be improved to quadratic,provided that the grammar is unambiguous, that is, it only allows one parsefor every string it defines. A tabular parsing algorithm for grammars withtwo-sided contexts has fourth power time complexity. For these grammarsthere is a recognition algorithm that uses a linear amount of space. For certain subclasses of grammars with contexts there are low-degree polynomial parsing algorithms. One of them is an extension of the classical recursive descent for context-free grammars; the version for grammars with contexts still works in linear time like its prototype. Another algorithm, with time complexity varying from linear to cubic depending on the particular grammar, adapts deterministic LR parsing to the new model. If all context operators in a grammar define regular languages, then such a grammar can be transformed to an equivalent grammar without context operators at all. This allows one to represent the syntax of languages in a more succinct way by utilizing context specifications. Linear grammars with contexts turned out to be non-trivial already over a one-letter alphabet. This fact leads to some undecidability results for this family of grammars
Resumo:
Ohjelmoinnin opettaminen yleissivistävänä oppiaineena on viime aikoina herättänyt kiinnostusta Suomessa ja muualla maailmassa. Esimerkiksi Suomen opetushallituksen määrittämien, vuonna 2016 käyttöön otettavien peruskoulun opintosuunnitelman perusteiden mukaan, ohjelmointitaitoja aletaan opettaa suomalaisissa peruskouluissa ensimmäiseltä luokalta alkaen. Ohjelmointia ei olla lisäämässä omaksi oppiaineekseen, vaan sen opetuksen on tarkoitus tapahtua muiden oppiaineiden, kuten matematiikan yhteydessä. Tämä tutkimus käsittelee yleissivistävää ohjelmoinnin opetusta yleisesti, käy läpi yleisimpiä haasteita ohjelmoinnin oppimisessa ja tarkastelee erilaisten opetusmenetelmien soveltuvuutta erityisesti nuorten oppilaiden opettamiseen. Tutkimusta varten toteutettiin verkkoympäristössä toimiva, noin 9–12-vuotiaille oppilaille suunnattu graafista ohjelmointikieltä ja visuaalisuutta tehokkaasti hyödyntävä oppimissovellus. Oppimissovelluksen avulla toteutettiin alakoulun neljänsien luokkien kanssa vertailututkimus, jossa graafisella ohjelmointikielellä tapahtuvan opetuksen toimivuutta vertailtiin toiseen opetusmenetelmään, jossa oppilaat tutustuivat ohjelmoinnin perusteisiin toiminnallisten leikkien avulla. Vertailututkimuksessa kahden neljännen luokan oppilaat suorittivat samankaltaisia, ohjelmoinnin peruskäsitteisiin liittyviä ohjelmointitehtäviä molemmilla opetus-menetelmillä. Tutkimuksen tavoitteena oli selvittää alakouluoppilaiden nykyistä ohjelmointiosaamista, sitä minkälaisen vastaanoton ohjelmoinnin opetus alakouluoppilailta saa, onko erilaisilla opetusmenetelmillä merkitystä opetuksen toteutuksen kannalta ja näkyykö eri opetusmenetelmillä opetettujen luokkien oppimistuloksissa eroja. Oppilaat suhtautuivat kumpaankin opetusmenetelmään myönteisesti, ja osoittivat kiinnostusta ohjelmoinnin opiskeluun. Sisällöllisesti oppitunneille oli varattu turhan paljon materiaalia, mutta esimerkiksi yhden keskeisimmän aiheen, eli toiston käsitteen oppimisessa aktiivisilla leikeillä harjoitellut luokka osoitti huomattavasti graafisella ohjelmointikielellä harjoitellutta luokkaa parempaa osaamista oppitunnin jälkeen. Ohjelmakoodin peräkkäisyyteen liittyvä osaaminen oli neljäsluokkalaisilla hyvin hallussa jo ennen ohjelmointiharjoituksia. Aiheeseen liittyvän taustatutkimuksen ja luokkien opettajien haastatteluiden perusteella havaittiin koulujen valmiuksien opetussuunnitelmauudistuksen mukaiseen ohjelmoinnin opettamiseen olevan vielä heikolla tasolla.
Resumo:
Lappeenrannan teknillinen yliopisto tutkii pientasajännitesähkön käyttöä. Yliopisto on rakennuttanut Järvi-Suomen Energia Oy:n ja Suur-Savon Sähkö Oy:n kanssa yhteistyössä kokeellisen pientasajännitesähköverkon, jolla pystytään tarjoamaan kenttäolosuhteet pienjännitetutkimukselle todellisilla asiakkailla ja todentaa LVDC-teknologiaa ja muita älykkään sähköverkon toimintoja kenttäolosuhteissa. Verkon tasajänniteyhteys on rakennettu 20 kV sähkönjakeluverkon ja neljän kuluttajan välille. 20 kV keskijännite suunnataan tasamuuntamolla ±750 V pientasajännitteeksi ja uudestaan 400/230 V vaihtojännitteeksi kuluttajien läheisyydessä. Tämän kandidaatintyön tarkoituksena on luoda yliopistolle tietokanta pientasajännitesähköverkosta kertyvälle tiedolle ja mittaustuloksille. Tietokanta nähtiin tarpeelliseksi luoda, jotta pienjänniteverkon mittaustuloksia pystytään myöhemmin tarkastelemaan yhdessä ja yhtenäisessä muodossa. Yhdeksi tutkimuskysymykseksi muodostui, kuinka järjestää ja visualisoida kaikki verkosta palvelimille kertyvä mittausdata. Työssä on huomioitu myös kolme tietokantaa mahdollisesti hyödyntävää käyttäjäryhmää: kotitalousasiakkaat, sähköverkkoyhtiöt ja tutkimuslaboratorio, sekä pohdittu tietokannan hyötyä ja merkitystä näille käyttäjille. Toiseksi tutkimuskysymykseksi muodostuikin, mikä kaikesta tietokantaan talletetusta datasta olisi oleellisen tärkeää ottaa talteen näiden asiakkaiden kannalta, ja kuinka nämä voisivat hakea tietoa tietokannasta. Työn tutkimusmenetelmät perustuvat jo valmiiksi olemassa olevaan mittausdataan. Työtä varten on käytetty sekä painettua että sähköisessä muodossa olevaa kirjallisuutta. Työn tuloksena on saatu luotua tietokanta MySQL Workbench -ohjelmistolla, sekä mittausdatan keräys- ja käsittelyohjelmat Python-ohjelmointikielellä. Lisäksi on luotu erillinen MATLAB-rajapinta tiedon visualisoimista varten, jolla havainnollistetaan kolmen asiakasryhmän mittausdataa. Tietokanta ja sen tiedon visualisointi antavat kuluttajalle mahdollisuuden ymmärtää paremmin omaa sähkönkäyttöään, sekä sähköverkkoyhtiöille ja tutkimuslaboratorioille muun muassa tietoa sähkön laadusta ja verkon kuormituksesta.
Resumo:
Dataloggerit ovat tärkeitä mittaustekniikassa käytettäviä mittalaitteita, joiden tarkoituksena on kerätä talteen mittausdataa pitkiltä aikaväleiltä. Dataloggereita voidaan käyttää esimerkiksi teollista prosessia osana olevien toimilaitteiden tai kotitalouden energiajärjestelmän seurannassa. Teollisen luokan dataloggerit ovat yleensä hinnaltaan satojen tai tuhansien eurojen luokkaa. Työssä pyrittiin löytämään teollisen luokan laitteille halpa ja helppokäyttöinen vaihtoehto, joka on kuitenkin riittävän tehokas ja toimiva. Työssä suunniteltiin ja toteutettiin dataloggeri Raspberry Pi-alustalle ja testattiin sitä oikeaa teollista ympäristöä vastaavissa olosuhteissa. Kirjallisuudesta ja internet artikkeleista etsittiin samankaltaisia laite- ja ohjelmistoratkaisuja ja niitä käytettiin dataloggausjärjestelmän pohjana. Raspberry Pi-alustalle koodattiin yksinkertainen Python-kielinen data-loggausohjelma, joka käyttää Modbus-tiedonsiirtoprotokollaa. Testien perusteella voidaan todeta, että toteutettu dataloggeri on toimiva ja kykenee kaupallisten dataloggereiden tasoiseen mittaukseen ainakin pienillä näytteistystaajuuksilla. Toteutettu dataloggeri on myös huomattavasti kaupallisia dataloggereita halvempi. Helppokäyttöisyyden näkökulmasta dataloggerissa havaittiin puutteita, joita käydään läpi jatkokehitysideoiden muodossa.
Resumo:
The nature of client-server architecture implies that some modules are delivered to customers. These publicly distributed commercial software components are under risk, because users (and simultaneously potential malefactors) have physical access to some components of the distributed system. The problem becomes even worse if interpreted programming languages are used for creation of client side modules. The language Java, which was designed to be compiled into platform independent byte-code is not an exception and runs the additional risk. Along with advantages like verifying the code before execution (to ensure that program does not produce some illegal operations)Java has some disadvantages. On a stage of byte-code a java program still contains comments, line numbers and some other instructions, which can be used for reverse-engineering. This Master's thesis focuses on protection of Java code based client-server applications. I present a mixture of methods to protect software from tortious acts. Then I shall realize all the theoretical assumptions in a practice and examine their efficiency in examples of Java code. One of the criteria's to evaluate the system is that my product is used for specialized area of interactive television.
Resumo:
Ohjelmistojen uudelleenkäyttö on hyvin tärkeä käsite ohjelmistotekniikan alueella.Ohjelmistojen uudelleenkäyttötekniikat parantavat ohjelmistokehitysprosessin laatua. Yleisiä ratkaisuja sekä ohjelmiston suunnittelun että arkkitehtuurin uudelleenkäyttöön ovat olio-ohjelmointi ja sovelluskehykset. Tähän asti ei ole ollut olemassa yleisiä tapoja sovelluskehysten erikoistamiseen. Monet nykyääntunnetuista sovelluskehyksistä ovat hyvin suuria ja mutkikkaita. Tällaisten sovelluskehyksien käyttö on monimutkaista myös kokeneille ohjelmoijille. Hyvin dokumentoidut uudelleenkäytettävät sovelluskehyksen rajapinnat parantavat kehyksen käytettävyyttä ja tehostavat myös erikoistamisprosessiakin sovelluskehyksen käyttäjille. Sovelluskehyseditori (framework editor, JavaFrames) on prototyyppityökalu, jota voidaan käyttää yksinkertaistamaan sovelluskehyksen käyttöä. Perusajatus JavaFrames lähestymistavassa ovat erikoistamismallit, joita käytetään kuvamaan sovelluskehyksen uudelleenkäytettäviä rajapintoja. Näihin malleihin perustuen JavaFrames tarjoaa automaattisen lähdekoodi generaattorin, dokumentoinninja arkkitehtuurisääntöjen tarkistuksen. Tämä opinnäyte koskee graafisen mallieditorin kehittämistä JavaFrames ympäristöön. Työssä on laadittu työkalu,jonka avulla voidaan esittää graafisesti erikoistamismalli. Editori sallii uusien mallien luomisen, vanhojen käyttämättä olevien poistamisen, kuten myös yhteyksien lisäämisen mallien välille. Tällainen graafinen tuki JavaFrames ympäristöönvoi huomattavasti yksinkertaistaa sen käyttöä ja tehdä sovellusten kehittämisprosessista joustavamman.
Resumo:
Ohjelmistoprojektin läpivienti vaatii suunnittelua ja yhteisiä tapaamisia toimittajan ja asiakkaan kesken. Ohjelmistotuotannon prosessit ovat määrittely, suunnittelu, toteutus, testaus ja käyttöönotto. Tärkeimmät dokumentit ovat projektisuunnitelma, toiminnallinen määrittely ja tekninen määrittely. Ongelmia projektin läpiviennissä voi tulla silloin, jos toimittaja ja asiakas eivät ymmärrä toisiaan. Tässä työssä tehdään SMSviestejä käsittelevä mobiilisovellus ja siihen liittyvät projektisuunnitelma sekä määrittelydokumentit. Mobiilisovellus ohjelmoidaan J2ME:llä, joka on sulautettujen järjestelmien ohjelmointiin suunniteltu Java-kieli. Sovellus tukee toisen asteen opiskelijoille suunnattuja mobiiliohjelmointi opintoja. Opintojakso kuuluu Pohjois- Karjalan ammattiopiston järjestämään turvallisuusalan koulutukseen. Sovelluksella voidaan lähettää ohjausviestejä OUMAN EH-60 -ohjaus- ja valvontayksikköön. Yksikön avulla voi ohjata ja valvoa esimerkiksi kiinteistön lämmönsäätöä, vesivahinkoja, oven lukitusta jne. Tässä työssä tehtävällä sovelluksella demonstroidaan kesämökin ohjausta. Langaton tiedonsiirto tulee tulevaisuudessa lisääntymään kiinteistöjen ohjaus- ja valvontajärjestelmänä. Hätä- ja valvontaviestit lähetetään automaattisesti kiinteistön omistajalle, hoivapalveluyrittäjälle, talohuoltoon tai hätäkeskukseen. Kiinteistön omistaja voi omalla matkapuhelimellaan ajasta ja paikasta riippumattavalvoa ja ohjata kiinteistöään reaaliaikaisesti. Pohjois-Karjalan ammattiopisto haluaa olla kehittämässä ja toteuttamassa turvallisuusalan koulutusta nyt ja tulevaisuudessa.
Resumo:
Bluetooth™ Teknologia - Bluetooth Wireless Technology - on lyhyen kantaman langaton kommunikointiteknologia. Vaikka se onkin ensisijaisesti suunniteltu kaapelin korvaajaksi laitteiden omaan toimintaan liittyvässä liikenteessä, voidaan sitä myös käyttää alustana monen käyttäjien peleissä ja muissa vastaavissa sovelluksissa. Tassa diplomityössä esitellään Bluetooth teknologia sovellusohjelmoijan näkökulmasta. Työssä esitellään teollisuuskonsortion määrittelemä Java-ohjelmointirajapinta Bluetooth teknologiaan. Tämän rajapinnan avulla voidaan kehittää kannettavia sovelluksia jotka kommunikoivat Bluetooth yhteyden yli. Rajapinta pohjautuu "Java™ 2 Microedition" alustaan ja on siten toteutettavissa myös pienissä laitteissa kuten matkapuhelimissa. Työssä esitellään lyhyesti rajapinnan keskeiset osat sekä annetaan esimerkki rajapinnan käytöstä. Työn konstruktiivisessa osassa rajapinnan keskeiset on toteutettu kahdelle eri alustalle: Sambian™ ja Microsoft® Windows® käyttöjärjestelmille. Talla tavalla on saatu arvokasta tietoa siitä, miten kyseinen rajapinta tulisi toteuttaa ja myös siitä miten sovellukset sitä käyttäisivät. Keskeiset suunnitteluratkaisut ja saadut kokemukset on raportoitu työn kirjallisessa osassa. Vaikka työn konstruktiivinen osuus onkin luonteeltaan esitutkimus eikä tähdännyt tuotteeseen, on tuloksena syntynyttä rajapintaa tarkoitus käyttää useassa Nokian sisäisessä tutkimus-ja kehityshankkeessa.
Resumo:
This thesis evaluates methods for obtaining high performance in applications running on the mobile Java platform. Based on the evaluated methods, an optimization was done to a Java extension API running on top the Symbian operating system. The API provides location-based services for mobile Java applications. As a part of this thesis, the JNI implementation in Symbian OS was also benchmarked. A benchmarking tool was implemented in the analysis phase in order to implement extensive performance test set. Based on the benchmark results, it was noted that the landmarks implementation of the API was performing very slowly with large amounts of data. The existing implementation proved to be very inconvenient for optimization because the early implementers did not take performance and design issues into consideration. A completely new architecture was implemented for the API in order to provide scalable landmark initialization and data extraction by using lazy initialization methods. Additionally, runtime memory consumption was also an important part of the optimization. The improvement proved to be very efficient based on the measurements after the optimization. Most of the common API use cases performed extremely well compared to the old implementation. Performance optimization is an important quality attribute of any piece of software especially in embedded mobile devices. Typically, projects get into trouble with performance because there are no clear performance targets and knowledge how to achieve them. Well-known guidelines and performance models help to achieve good overall performance in Java applications and programming interfaces.
Resumo:
Testauksesta on tullut oleellinen, yhä tärkeämpi sovelluskehitysprojektien osa. Sovelluksilta vaaditaan luotettavuutta kaikilla niiden toiminnan osa-alueilla. Suorituskykyyn liittyvät asiat ovat keskeinen osa näitä vaatimuksia erityisesti, kun kyse on Internetissä toimivista www-sovelluksista. Aluksi työssä esitellään erilaisia sovellusten testausmenetelmiä. Siinä kerrotaan yleisimmistä menetelmistä, joiden avulla pyritään sovelluksista löytämään vääränlaiset toimintatavat suhteessa niiden määriteltyihin toimintatapoihin. Testauksen tulosten avulla pystytään keskittymään oikeisiin kohtiin sovellusten toiminnan korjaamisessa. Työssä analysoidaan www-sovellusten rakennetta yleisen kerrosarkkitehtuurin eri kerrosten ominaisuuksia ja niihin sisältyviä keskeisimpiä sovellusten suorituskykyyn vaikuttavia tekijöitä kuvaillen. Näiden, www-sovellusten eri osien suorituskykyyn vaikuttavien ominaisuuksien perusteella esitellään esimerkkejä, kuinka Java-kieleen perustuvien www-sovellusten suorituskykyä voidaan parantaa. Lisäksi työssä kuvataan, kuinka erityisesti ilmaisella Apache JMeter-sovelluksella voidaan Java-kieleen perustuvien www-sovellusten suorituskykyä mitata. Työn tuloksena esitellään lopuksi suorituskyvyn testaus- ja parannusprosessi. Sen tarkoitus on selkeyttää erityisesti Java-kieleen perustuvien www-sovellusten suorituskyvyn testauksessa ja parannuksessa huomioon otettavia asioita.