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

JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

JS-kehitys - yleiskuvausTIEA255 - Juho Vepsäläinen

Page 2: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

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.)

Page 3: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Esityksen rakenneJavaScript kielenä

JavaScript www-pinossa

HTML5

CanvasDraw - yleiskuvaus

CanvasDraw - toiminnallisuus

CanvasDraw - arkkitehtuuri

Yhteenveto

Page 4: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

JavaScript kielenä

Page 5: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

!=

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

Page 6: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen
Page 7: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

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

Page 8: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

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.)

Page 9: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Tyypeistä

Object, Array, String, Number (float, int), null, undefined

Object -> var duck = {name: 'donald', age: 42};

Esim. 5 on olio eli (5).toString(); toimii

Page 10: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Ongelmakohtia

Ei operaattorien ylikirjoitusta

== vs. ===

a = 5 vs. var a = 5

Roikkuvat pilkut [1, 2, 3, ] ei toimi IE:ssä (kiitos MS)

Page 11: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

JavaScript www-pinossa

Page 12: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen
Page 13: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

node.js

Express, geddy, ...

HAML SASS jQuery/MooTools/RightJs/...

Couchdb, Mongodb, Redis, MySQL, Postgres

Page 14: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

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

Page 15: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

HTML5

Page 16: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen
Page 17: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen
Page 18: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen
Page 19: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen
Page 20: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen
Page 21: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen
Page 22: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

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)

Page 23: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

CanvasDrawYleiskuvaus

Page 24: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

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ä)

Page 25: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

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)

Page 26: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Toiminnallisuuden määrä

Suorituskyky Vakaus

Page 27: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

"The goal of design is to find the minimal

spanning set of metaphors that solves

the problem." - Aza Raskin

Page 28: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen
Page 29: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

CanvasDrawToiminnallisuus

Page 30: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Sivellin

Dab

Page 31: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Kynä

Page 32: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Viiva

Page 33: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Muoto

Page 34: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Sumennus

Page 35: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Zoom

Nyk. toteutus drawImage + toisto

Aiemmin käytössä CSS (liian hidas)

Page 36: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Undo

Page 37: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Tasot

Page 38: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Lataa/Tallenna

Page 39: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

CanvasDrawArkkitehtuuri

Page 40: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Canvas

RightJS

RequireJS

Konfiguraatio Pluginit

Page 41: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

RequireJS

Moduulit! -> Kehitettävyys

Buildaus (Google Closure Compiler, Uglify.js)

Asynkroninen lataus

Aktiivinen yhteisö

Page 42: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

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)

Page 43: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

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

Page 44: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Plugin-arkkitehtuuri

Kaikki toiminnallisuus (paneelit, työkalut ym.) omassa plugin-formaatissa

RequireJS-latausmekanismi pohjana

Object + meta-Object + takaisinkutsut

Page 45: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Yhteenveto

Page 46: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

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)

Page 47: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Linkkejä

jswiki

JavaScript Garden

html5demos.com

html5 kirja (Pilgrim)

...

Page 48: JS-kehitys - yleiskuvaus - Jyväskylän yliopisto · 2011-04-05 · Mongodb, Redis, MySQL, Postgres. Nykytilanne Kokee uutta tulemista erityisesti selainten kehityksen myöt ... HTML5-pohjainen

Kysy