JS-kehitys - yleiskuvaus. TIEA255 - Juho Vepsäläinen



Samankaltaiset tiedostot
Luento 3. Jouni Ikonen - Jouni.Ikonen lut.fi

1. Olio-ohjelmointi 1.1

Digitaalisen median tekniikat JavaScript

Digitaalisen median tekniikat JavaScript Harri Laine 1

Digitaalisen median tekniikat. Luento 4: JavaScript

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

(JavaScript) Aleksi O Connor DI Informaatioverkostot. Markku Laine Mediatekniikan laitos

ELM GROUP 04. Teemu Laakso Henrik Talarmo

05/04/2004. Digitaalisen median tekniikat, k2004 HY/TKTL, javascript_1. Harri Laine 1. JavaScript

Verkkosivujen toiminnallisuus (JavaScript)

Harjoitustyö 3: Verkkosivujen toiminnallisuus (JavaScript)

ecome Markkinoiden kehittynein julkaisujärjestelmä

- Komposiittityypit - Object (Mukaanlukien funktiot) - Array. - Erikoisdatatyypit - null - undefined

T Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

ruovedellä pohjois-hämeessä. lepounit.com (yritys) lepo.net (oma)

Internet-pohjaisen oppimisympäristön laadinta. Luento 3

HTML5 Tutkielma Centria ammattikorkeakoulu Paavo Räisänen

WWW-Sivustojen suunnittelu. Miten WWW toimii. Suunnittelun lähtökohdat

WWW-Sivustojen suunnittelu


Mikä yhteyssuhde on?

HTML5 video, audio, canvas. Mirja Jaakkola

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Aulikki Hyrskykari. JWT Hyrskykari, SIS, Tampereen yliopisto 4/23/2014

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Internet-pohjaisen oppimisympäristön laadinta. Luento 3

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Ohjelmistoarkkitehtuurit, TTY. Vierailuluento. Mika Siikarla,

JavaScript alkeet Esimerkkikoodeja moniste 3 (Metropolia 11/2011)

Ohjelmoinnin peruskurssien laaja oppimäärä

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

TIE Principles of Programming Languages CEYLON

Järjestelmäarkkitehtuuri (TK081702) AJAX, Asynchronous JavaScript And XML. AJAX, Asynchronous JavaScript And XML

YHTEYSSUHDE (assosiation)

Alkuun HTML5 peliohjelmoinnissa

16. Javan omat luokat 16.1

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

Javan perusteita. Janne Käki

Climbing time. IIZO3030, IIO11100, IIM50300 Pekka Melgin H3173 Aleksi Olkkonen H4198. Loppuraportti

Hakemistojen sisällöt säilötään linkitetyille listalle.

OHJELMOINTIA MONIPUOLISESTI MATEMATIIKAN OPETUKSESSA LUMA-PÄIVÄT, TAMPERE

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

Copyright Observis Oy All rights reserved. Observis Oy Ville Kanerva, CTO Heikki Isotalus, COO Datasta tietoa

CSS - tyylit Seppo Räsänen

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Ohjelmistoyrityskartoitus Joulukuussa 2017

Kurssijärjestelyt. ME-C2300 Verkkojulkaisemisen perusteet (5 op) Mari Hirvi Informaatioverkostot / Mediatekniikan laitos

Ohjelmointi 1 C#, kevät 2013, 2. tentti

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Tekninen suunnitelma - StatbeatMOBILE

12. Kehysarkkitehtuurit

Joustava tapa integroida järjestelmiä node-red:llä visuaalisesti - Internet of Things & Industrial Internet

Groovy. Niko Jäntti Jesper Haapalinna Group 31

Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli

Integrointi. Ohjelmistotekniikka kevät 2003

Koka. Ryhmä 11. Juuso Tapaninen, Akseli Karvinen. 1. Taustoja 2. Kielen filosofia ja paradigmat 3. Kielen syntaksia ja vertailua JavaScriptiin Lähteet

Tietokone.ja.verkko. Web$sisällönhallinta. Tietokone. Tietokone:.Historia.pikakelauksena.

Ohjelmistoarkkitehtuurit, TTY. Vierailuluento. Mika Siikarla,

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

2. Olio-ohjelmoinista lyhyesti 2.1

ETÄTERMINAALIYHTEYS SELAIMELLA

UML ja luokkien väliset suhteet

PLA Mobiiliohjelmointi. Mika Saari

Java-kielen perusteet

4. Olio-ohjelmoinista lyhyesti 4.1

Asynkroninen ohjelmointi.net 4.5 versiolla

Digitaalisen median tekniikat. Luento 3: CSS

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen

Tech Conference Visual Studio 2015, C#6,.NET4.6. Heikki Raatikainen. #TechConfFI

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kokemuksia ohjelmistokehityksestä. Kai Kulju & Heikki Naski

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

Delegaatit ja tapahtumakäsittelijät

Java-API, rajapinnat, poikkeukset, UML,...

Kurssijärjestelyt. CS-1180 Verkkojulkaisemisen perusteet (5 op) Hanna Hämäläinen Informaatioverkostot / Mediatekniikan laitos

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Taulukot. Jukka Harju, Jukka Juslin

Rajapinta (interface)

Harjoitus 3: Flash-komponenttiarkkitehtuuri ( )

Harjoitus 2 (viikko 45)

Full-Stack JavaScript: MEAN.JS-projektin luominen. Harri Huhtala

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

-projekti. Pasi Häkkinen TTY/hypermedialaboratorio

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Groovy. Samuli Haverinen, Aki Hänninen. 19. marraskuuta 2015

PLA Mobiiliohjelmointi. Mika Saari

VERKKOSOVELLUKSEN TOTEU- TUS FIREBASEN JA ANGULARJS:N AVULLA

Aulikki Hyrskykari Antti Sand

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Olio-ohjelmointi Javalla

Luento 7: XML-ohjelmointirajapinnat

Transkriptio:

JS-kehitys - yleiskuvaus TIEA255 - Juho Vepsäläinen

Taustaa Basic, Pascal, C (PC, AVR), Java, Object Pascal (Delphi), PHP, Python, Lua, AS2, C++ (Qt) JavaScript,... Avoimen lähdekoodin proj. kehitystä (Blender, Phatch, omat) laidasta laitaan, kuitenkin grafiikkaan keskittyen Tällä hetkellä fokus erityisesti www-puolella (freelancer) nixtu.blogspot.com, @bebraw (Twitter, GitHub ym.)

Esityksen rakenne JavaScript kielenä JavaScript www-pinossa HTML5 CanvasDraw - yleiskuvaus CanvasDraw - toiminnallisuus CanvasDraw - arkkitehtuuri Yhteenveto

JavaScript kielenä

"Java is to JavaScript as ham is to hamster."!=

Historiasta Netscape, Brendan Eich, 1995 Vaikutteita Java 1.0:sta (Math, Time), Selfistä (prototyypit), Schemestä,... MS:n JScript ECMAScript AS ym. sukua vaikka ovatkin hieman erilaisia

Yleiskuvaus C:n ja Javan näköinen Heikko, dynaaminen tyypitys (helppo tehdä virheitä) Funktionäkyvyys, ei blokki, kuten monissa muissa Olioperustainen (funktiokin on olio), prototyypit käytössä toisin kuin yleisesti Mahdollistaa eri paradigmojen käytön (funktio, olio, ym.)

Tyypeistä Object, Array, String, Number (float, int), null, undefined Object -> var duck = {name: 'donald', age: 42}; Esim. 5 on olio eli (5).toString(); toimii

Ongelmakohtia Ei operaattorien ylikirjoitusta == vs. === a = 5 vs. var a = 5 Roikkuvat pilkut [1, 2, 3, ] ei toimi IE:ssä (kiitos MS)

JavaScript www-pinossa

HAML SASS jquery/mootools/ RightJs/... Express, geddy,... node.js Couchdb, Mongodb, Redis, MySQL, Postgres

Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myötä Myös HTML5:n tarjoamat rajapinnat auttavat Ei vain silmänkarkkia varten! Sopii myös sovelluskehitykseen

HTML5

Huomioita Kattaa valtavan määrän toiminnallisuutta Keksii osin Flashin uudelleen Tuki hajanaista Speksi yhä vaiheessa, tosin vakaita osiakin löytyy Uusi "AJAX" (trenditermi, jota tungetaan joka paikkaan)

CanvasDraw Yleiskuvaus

Lähtökohta Blender (UI, toiminnallisuutta, noodijuttuja, Python) BePaint (PyGTK-pohjainen konsepti) Cassopi (PyGTK + Cairo) bui -> Scocca (käyttöliittymäsovitin, OpenGL, Blender, Qt) Harmony (verso, lisätty mm. symmetria ym. ja uusittu UI) Ratemydrawings, CanvasDraw (liikkeelle puhtaalta pöydältä)

CanvasDraw Suunniteltu ratemydrawings.com tarpeiden pohjalta Käyttäjiä joitain tuhansia Pääasiassa nuoria sekä varttuneempia taiteilijoita Lähtökohtana aiemmat työkalut (Flash, Java). Sinänsä myös haaste HTML5-pohjainen työkalu seuraa yleistä trendiä (vrt. Muro ja Sketchpad)

Toiminnallisuuden määrä Suorituskyky Vakaus

"The goal of design is to find the minimal spanning set of metaphors that solves the problem." - Aza Raskin

CanvasDraw Toiminnallisuus

Dab Sivellin

Kynä

Viiva

Muoto

Sumennus

Zoom Nyk. toteutus drawimage + toisto Aiemmin käytössä CSS (liian hidas)

Undo

Tasot

Lataa/Tallenna

CanvasDraw Arkkitehtuuri

Konfiguraatio Pluginit RightJS Canvas RequireJS

RequireJS Moduulit! -> Kehitettävyys Buildaus (Google Closure Compiler, Uglify.js) Asynkroninen lataus Aktiivinen yhteisö

RightJS jquery++ Sisältää siis DOM-sovittimen lisäksi muuta sälää (luokat, apufunktioita, plugineja) Draggable, UI-plugarit olleet hyödyllisiä Joitain ongelmia (pieni yhteisö, vähän käytetty)

Konfiguraatio Sovelluksen rakenne ja toiminnallisuus on helposti muokattavissa Object, joka sis. määritelmän Käyttöliittymän rakenne, pikanäppäimet, käytettävät työkalut ja paneelit määritellään tällä tavoin

Plugin-arkkitehtuuri Kaikki toiminnallisuus (paneelit, työkalut ym.) omassa plugin-formaatissa RequireJS-latausmekanismi pohjana Object + meta-object + takaisinkutsut

Yhteenveto

Yhteenveto JavaScript sopii hyvin sovelluskehitykseen API:en keskeneräisyys ja selaintuki ongelmallisia CanvasDraw on eräs esimerkki modernista sovelluksesta Jatko näyttää varsin mielenkiintoiselta (ipad ym. kehitys)

Linkkejä jswiki JavaScript Garden html5demos.com html5 kirja (Pilgrim)...

Kysy