IBM i und mobile Geräte

22. Oktober 2013 | Von | Kategorie: Cloud, Social Media, Devices

Angesprochen auf das Thema Anwendungsentwicklung für mobile Geräte und IBM i stelle ich mir die Frage: Für wen sollten solche Anwendungen gedacht sein? Möchte der Nutzer einer IBM i die mobilen Geräte nur im eigenen Unternehmen einsetzten oder möchte er Daten und/oder Dienste an seine Kunden heraus- und/oder weitergeben? Möglich ist beides! Dieser Artikel beschäftigt sich damit, wann und wie welcher Weg sinnvoll ist.

mobil

von Lars Denis Kohl und Sebastian Lück

Dazu interessieren drei Teilgebiete.

  • Erstens: Welche Möglichkeiten bieten die mobilen Geräte?
  • Zweitens: Welche Plattform bietet die benötigten Möglichkeiten, und welche Risiken sind beim Betrieb zu berücksichtigen?
  • Drittens: Welche Wege der Implementierung gibt es?

Zur ursprünglichen Frage: „Kann man die IBM i als Basis für mobile Anwendungen nutzen?“

Es gibt eine einfache Antwort: „Ja, auf jeden Fall!“

Erstens: Welche Möglichkeiten bieten die mobilen Geräte?

Die Auslieferung der Daten kann direkt von der IBM i (bzw. AS/400) erfolgen. Hierfür ist es notwendig, auf der Datenbankinstanz eine Schnittstelle zur Verfügung zu stellen. Diese kann als Anwendung z. B. in JAVA oder PHP realisiert werden. Für die Auslieferung der Ergebnisse der Datenbankabfragen nutzt man ein Format, beispielsweise XML oder JSON. Besonders JSON (JavaScript Object Notation) ist in der Implementierung sehr schnell umsetzbar.

Listing 1 JAVA Servlet Implementierung:
package com.matter8.eventmap.rest;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.matter8.eventmap.database.*;
import com.matter8.eventmap.json.JsonMessage;
import java.io.*;
import java.sql.*;
import java.util.ArrayList;
/**
* Servlet implementation class sendOpener
*/
@WebServlet(„/sendOpener“)
public class SendOpener extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SendOpener() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println(request.getRequestURL());
System.out.println(„Anfrage“);
PrintWriter out = response.getWriter();
out.print(Message());
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
//Server Antwort generieren
PrintWriter out = response.getWriter();
out.print(Message());
response.flushBuffer();
out.close();
}p
rivate String Message(){
String msg = ““;
// JSON Object bereitstellen
ArrayList head = new ArrayList();
ArrayList bodyKeys = new ArrayList();
ArrayList bodyValues = new ArrayList();
JsonMessage jm = new JsonMessage();
DBConnection dbcon = new DBConnection();
Connection con = dbcon.getConnection();
try {
Statement stmt = con.createStatement();
Statments st = new Statments();
//Datenbank abfrage
ResultSet HeadRs =
stmt.executeQuery(st.selectAktuellHeadByCustomer(„Lebensstern“));
HeadRs.next();
//zerlegen der Antwort des SQL Servers

Die Daten können dann entweder über den IBM WebSphere Applications Server oder eine eigene TCP/IP
Schnittstelle an das Endgerät übermittelt werden. Diese strukturierte Datenzusammenstellung wird dann auf
der Gegenseite wieder zerlegt.

In Listing 2 sieht man eine Implementierung in Objective-C.
// Created by denis kohl on 23.04.13.
// Copyright (c) 2013 denis kohl. All rights reserved.
//
#import “RequestOpener.h“
@implementation RequestOpener
@synthesize package,error,head,type,zeit,text;
- (id) initWithURL:(NSString *) url
{
//Initalisrung des des Obejkts
self = [super init];
//Vorbereitung des HTTP Requests
NSMutableURLRequest * request = [[NSMutableURLRequest alloc] init];
[request setHTTPMethod:@“GET“];
[request setURL:[NSURL URLWithString:url]];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//Vorbelegung der Ausgabe
text = [NSString stringWithFormat:@“No network connection“];
zeit = [NSString stringWithFormat:@“19:00 - 02:00“];
//Ausführen der Abfrage
[NSURLConnection sendAsynchronousRequest:request queue:queue
completionHandler:^(NSURLResponse *response, NSData *data, NSError *err)
{
//Überprüfung der Rückgabe
if ([data length] > 0 && err == nil)
{
NSError * e = [[NSError alloc] init];
NSLog(@“Response: %@“, data);
//Parsen des JSON Objekts in Lokale Werte.
NSDictionary * jsonArray = [NSJSONSerialization
JSONObjectWithData:data options:NSJSONReadingMutableContainers|
NSJSONReadingAllowFragments error:&e];
error = [jsonArray valueForKey:@“error“];
NSDictionary * bodyDict = [jsonArray valueForKey:@“body“];
NSDictionary * headDict = [jsonArray valueForKey:@“head“];
if ([[headDict valueForKey:@“name“]
isEqual:@“Lebensstern“]&& [[headDict valueForKey:@“type“]
isEqual:@“Aktuell“]) {
text = [bodyDict valueForKey:@“text“];
zeit = [bodyDict valueForKey:@“zeit“];
}
}
}];
return self;
}
@end

abb1Ein mobiles Gerät, z. B. Smartphone oder Tablet, kann die Möglichkeit bieten, dass Personen auf Informationen zugreifen können, auch fernab des Arbeitsplatzes oder sogar außerhalb des Büros. In der Regel wird das ermöglicht durch eine spezielle Anwendung – eine sogenannte App. Die angesprochenen mobilen Geräte sind hingegen von der Leistungsfähigkeit her nur vergleichbar mit preiswerten (also langsamen) Arbeitsplatz-gebundenen Desktop Geräten. Ein Vorteil im Vergleich von mobilen Geräten mit Desktop System liegt jedoch zumeist im günstigeren Preis. Einige Android-basierte Geräte sind für teilweise weit unter 300 Euro erhältlich.

Die Frage lautet: Ab wann macht ein Mehraufwand für Entwicklung, Gerätebeschaffung und Administration Sinn?

abb2Eine generelle Antwort lässt sich hierauf so noch nicht geben.

Die Antwort ist: „Es kommt drauf an.“

Es kann Sinn machen, wenn Tätigkeiten vorhanden sind, die sich sehr häufi g wiederholen und normierbar sind, also beispielsweise durch Formulare abgebildet werden können. Besonders sinnvoll kann dieses werden, wenn zusätzliche weitere Optionen der genutzten mobilen Endgeräte verwendet werden können. Also z. B. Bluetooth, WLAN, GPS, Blitz, Kamera, Scanner, Bilderkennung, biometrische Eingaben (Unterschriften, Fingerabdrücke, …), usw. … Teilweise könnten so auch vollwertige Endgeräte (Desktops, Notebooks) ersetzt werden. Dies ist denkbar für Vertriebsmitarbeiter, Kundenbetreuer, Lagerdisponenten usw.

Neben der spezifischen Anwendung durch die App, sind natürlich auch Funktionen wie eMail, Office-Äquivalente oder sogar Notes-ähnliches möglich. Somit reicht es für viele dienstliche Belange aus. Dieser Vorteil lässt sich besonders gut für den Aussendienst ausspielen, da die Datensicherheit hier meist einfacher gewährleistet werden kann. Dies gilt allerdings eigentlich nur für Apple und eingeschränkt Blackberry und mobiles Windows (Windows RT, Microsoft Windows Phone 8). Bei Android muss man aufgrund der Veröffentlichungs- Politik von Apps über den Store „Google Play“ hier mit Abstrichen rechnen. Da neue Apps in der Regel nur über die Stores installierbar sind – vereinfacht dies die Administration gewaltig. Weiterhin sind normalerweise keine verbreiteten Malware Programme bzw. Viren bekannt – ausser bei Android.

abb3Besonders bei Apple sind durch den Prüfprozess bei der Veröffentlichung kaum aggressive oder schädliche Inhalte möglich. Wann und wie man eine Anwendung für einen Endkunden plant, wird in einem gesonderten Artikel betrachtet.

Zweitens: Welche Plattformen sind aktuell verfügbar?

Es gibt derzeit vier große Anbieter für mobile Plattformen. Apple startete 2007 mit dem iPhone als erster Hersteller die mobile Plattform mit eigenem Entwicklungswerkzeug und Store, so daß eine Komplettlösung für mobile Applikationen entstand. Von Anfang an stand das Einbinden externer Entwickler im Mittelpunkt, da diese ihre Software (die Apps) über Apple vertreiben sollten. Das zugehörige Betriebssystem wird unter dem Namen iOS angeboten. Zu Spekulationen zur Namensähnlichkeit von iOS und IBM i enthalte ich mich.

abb4Technisch gesehen ist iOS ein Derivat vom Berkley System Demon (BSD), genauer Free BSD. Somit ein Unix. Googles Android wurde im Oktober 2008 veröffentlicht. Android OS hat seine Wurzeln in der Linux Gemeinde. Allerdings wurde die Kompatibilität weitgehend aufgelöst – so weit, dass man es heute als eigenständiges Betriebssystem bezeichnet. Es gibt eine Vielzahl von Anbietern, die Android-basierte Geräte anbieten. Vom Highend Gerät Samsung S4 Galaxy bis hin zu unter 50 Euro Geräten. Der große Vorteil der breiten Hardwarevielfalt mit entsprechend weiter Akzeptanz und Verbreitung hat sich inzwischen als ernstzunehmendes Problem für die Android App Entwickler herausgestellt. Denn eine allgemeingültige Entwicklung einer App für beliebige Hardwarehersteller ist mit besonders schwer vorhersagbaren Kosten verbunden. Somit stehen die Entwickler bei der App Entwicklung vor großen Herausforderungen.

 

Kostenfaktor

Um den Kostenfaktor für die App Entwicklung einschätzen zu können, sind unterschiedliche Punkte zu betrachten. Sowohl was die Leistungswerte der Hardware angeht, wie auch schlichtweg das Vorhandensein von unterschiedlichen Hardware-Komponenten. Nahezu jeder Hardware-Hersteller ist inzwischen, um seine Hardware besser zu nutzen von der ursprünglichen Google Software Distribution in vielen wesentlichen Punkten abgewichen. Somit gibt es in der Praxis unterschiedliche „Androids“. Dies, die mangelnde Sicherheitsüberprüfung und der unterschiedliche Aufbau der Bedienelemente machen es für die Haus-interne Administration anspruchsvoll die gewünschten Standards einzuhalten oder zumindest zu erreichen.

abb5

Allerdings sind diese Android Geräte im Vergleich zu Apple Geräten meist günstiger in der Anschaffung. Bemerkenswert ist das überraschende Comeback des Unternehmens Blackberry. Die Modelle Q10 und Z10 gehören der Fachpresse nach mit zu den besten auf dem Markt verfügbaren Geräten. Zudem ist die überarbeitete Version des Blackberry OS inzwischen sogar dazu in der Lage, neben den ureigenen speziellen Blackberry Anwendungen auch Android Apps zu unterstützen.

Dann gibt es noch Microsoft. Windows RT und Windows Phone 8 sind der nächste Versuch von Microsoft in den Markt für mobile Endgeräte einzusteigen. Bei der Vertriebsplattform Windows Store hat Microsoft viele Aspekte vom Vorbild Apple iTunes Store übernommen, so dass man hier ähnliche Nutzungsbedingungen und Richtlinien für die Veröffentlichung vorfindet. Bevor man sich jetzt auf eine Entwicklung einer eigenen App einlässt, sollte man sich mit dem Thema Investitionsschutz befassen.

Plattformen mit Zukunft?

abbX

Welche Plattform wird voraussichtlich in 2–5 Jahren noch verfügbar sein? Wird das Betriebssystem und die Hardwareplattform jetzt und vorraussichtlich zukünftig weiterentwickelt? Wie sieht es mit der Anzahl und Verfügbarkeit von fähigen Entwicklern aus? Gibt es weitere Funktionen, die benötigt werden die in absehbarer Zeit umgesetzt werden sollen?

Schlagworte: , , , , , , , , , , , , , , , , , ,

Schreibe einen Kommentar

Sie müssen eingeloggt sein, um einen Kommentar schreiben.