23
Software Engineering 2 A practical course in software engineering Ekkart Kindler

Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Software Engineering 2A practical course in software engineering

Ekkart Kindler

Page 2: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Tutorial 2:Web technologies, …

Page 3: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerAgenda

Web Technologies

Group Meeting today

Status Report next week

Project Q&A

3SE2 (02162 e19), T02

Page 4: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerWeb Technologies

For your web/cloud backend, you need some web application infrastructure

Traditional: Java EE application servers,

Lightweight infrastructures:

4SE2 (02162 e19), T02

Page 5: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart Kindler

Choose wisely

Make sure, you can show “something running” in next weeks Status Reports!

5SE2 (02162 e19), T02

Page 6: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerEarlier GlassFish tutorials

GlassFish server and first dynamic web pages:http://www2.compute.dtu.dk/courses/02162/e14/tutorials/assignment1.shtml

REST serviceshttp://www2.compute.dtu.dk/courses/02162/e14/tutorials/assignment2.shtml

Persistency and JPAhttp://www2.compute.dtu.dk/courses/02162/e14/tutorials/assignment5.shtml

6SE2 (02162 e19), T02

Page 7: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerREST and Java

JAX-RS / Jersey: nice Vogella Tutorial:https://www.vogella.com/tutorials/REST/article.html

Important (independently from the used technology): Let the infrastructure do the heavy lifting (e.g.

converting REST input to parameters, and producing the output in the right format); see next examples

7SE2 (02162 e19), T02

Page 8: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerHello World Examplepackage dk.dtu.compute.se2.web.second.services;

...

import javax.ws.rs.*;

@Path("/helloworld")public class HelloWorldService {

@GET@Produces(MediaType.TEXT_PLAIN)public String sayHelloWorld() {

return "Hello World! " + new Date();}

}

8SE2 (02162 e19), T02

Page 9: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerOther tags: Examples

@GET@PATH{"/addevent"}@Consumes({MediaType.APPLICATION_FORM_URLENCODED})@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})public Event addEvent(@QueryParam("value") float value, @QueryParam("id") int id) {

...

}

9SE2 (02162 e19), T02

Page 10: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerJPA (ORM)

JPA = Java Persistency APIORM = Object-Relational Mapping

JPA allow you to obtain data from a database as objects and write the changed objects back to the database (typically without writing any SQL-queries)!

“Java model” of data that are stored in DB: entities

10SE2 (02162 e19), T02

Page 11: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerWhich database to use?

SQL

vs.

no-SQL

11SE2 (02162 e19), T02

Page 12: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerMessaging

REST is a request reply protocol and relatively heavy-weight

Sometimes, you need a light-weight protocol and you need to be able to push data to the client

Solution: Messaging, pub/sub-protocols (publication/subscribe)

12SE2 (02162 e19), T02

Page 13: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerMQ Telemetry Transport

Publication and subscription service (pub/sub) for messages

Messages arranged in hierarchical topics: e.g.dk.dtu.compute.se2/groupa/school1/room1/switch1

Message contents and its meaning is defined by user (technically an array of bytes)

13SE2 (02162 e19), T02

Page 14: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerMQ Telemetry Transport

Clients can publish messages on topics

Topics do not need to be explicitly defined

Clients can subscribe for topics and will be notified when a message on the topic are published

Wildcards for subscription: + for an arbitrary level: e.g.

dk.dtu.compute.se2/groupa/school1/+/switch1 # for a complete subtree: e.g.

dk.dtu.compute.se2/groupa/#14SE2 (02162 e19), T02

Page 15: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerPaho

Paho is an open source project for programming MQTT clients in Java (among) others:

https://www.eclipse.org/paho/ https://www.eclipse.org/paho/clients/java/ https://www.eclipse.org/paho/files/javadoc/

https://www.programcreek.com/java-api-examples/?api=org.eclipse.paho.client.mqttv3.MqttCallback

15SE2 (02162 e19), T02

Page 16: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerMqttClient

connect(...)publish(...)subscribe(...)unsubscribe(...)disconnect(...)

close()

setCallBack(MqttCallback callback)...

16SE2 (02162 e19), T02

Page 17: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerMqttCallback

void messageArrived(String topic,MqttMessage message) throws Exception;

...

17SE2 (02162 e19), T02

Page 18: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerMqttAsyncClient

There is also an implementation of an MQTT-client, where all methods are non-blocking (not waiting for the actual operation be completed)

These methods return an IMqttToken, which can be used to track the status of the invoked operation and obtain the result of the operation later

18SE2 (02162 e19), T02

...

Page 19: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Project:Group Meetings

Page 20: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerToday

Group leader and deputy (if not decided yet) Assign a responsible (for planning and tracking all

actions necessary) for all submissions and all presentations. In particular the upcoming ones

Arrange facilities in a way that supports groups needs

Agenda and minutes!

20SE2 (02162 e19), T02

Page 21: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerStatus Report

Each group should report on (max. 10 minutes) how far they are with their work up to release 0: Wishes for devices First presentation (status) Set up of infrastructure (web server and Jenkins) Project vision Organization (issues and problems)

Some time for follow-up questions (5 minutes)

21SE2 (02162 e19), T02

Page 22: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart Kindler

Project Q & A

22SE2 (02162 e19), T02

Page 23: Software Engineering 2 (02162)...For your web/cloud backend, you need some web application infrastructure Traditional: Java EE application servers, Lightweight infrastructures: SE2

Ekkart KindlerRooms for group meeting

Group A: 210.008Group B: 210.012Group C: 210.018 Group D: 210.112Group E: 210.118

23SE2 (02162 e19), T02