Why ignition's OPC UA is not based on OPC Foundation? - opc

I'm researching about OPC UA and software that uses it, I noticed that one of major products that is using OPC UA is ignition but its not using foundation's sdk.
What's the problem with that ? I can see that Foundation licenses other opc ua servers. does it really matter or not ?

Ignition is written in Java and the OPC Foundation’s Java stack didn’t exist when Ignition was originally developed.
Since then, it has migrated to using Eclipse Milo, an open source implementation of OPC UA, and the OPC Foundation has abandoned its Java stack and no longer maintains it.

I can't really speak for Ignition, but OPC Foundation is only providing the Stack layer of OPC UA for Java. The stack layer implements the message transport, encoding and encryption and is vital for ensuring interoperability of communication.
Prosys OPC UA SDK for Java provides the SDK layer on top of the OPC Foundation Stack for Java. The SDK layer provides implementation of application level functionality, such as session and subscription management, events, alarms and even information modelling capabilities.
Although OPC Foundation has officially discontinued the development of the Java Stack, it is very mature, supports OPC UA 1.04, and it is still updated for important security issues. After all, the development was started in 2006 already. So there is nothing wrong with it, except that you would usually need the SDK layer to be able to develop full-blown applications easily enough. For very basic applications, you can build the respective functionality yourself, too, but in practice it does not usually make sense due to all the requirements.
Prosys OPC UA SDK is commercial and comes with commercial support, which can be good or bad depending on what you are looking for :) The stack is nowadays integrated into the product and being actively developed along with the SDK to ensure full support for all OPC UA functionality in future as well.

Welcome to stackoverflow
There is no obligation to use the Foundation's SDKs, and if you use those SDKs in a commercial program or app you need to be a member and pay an annual fee.
Instead they can be used for free in open source software.
I have written from the base my own OPC UA client for Android, without using any SDK, just reading the extensive documents of the foundation.
Here is the app that incorporates it: https://www.suppanel.com/index.php/en/

Related

Why are software downloads only categorized by OS and not architecture?

When deploying software (particularly non managed code), obviously you are targeting an OS as well as a particular archtecture. However, when downloading software on the internet, architecture never seems to be relevant beyond 32-bit and 64 bit (presumably x86 and x86-64). Is this because there is an inherent assumption that most desktop computers run some flavor of x86 and get their software from the web while mobile devices that have ARM processors get their software from mobile stores, etc? I feel this is too big of an assumption.
That is not an assumption but manifestation of resource limitation on the developers part.
Porting software even to another operating system requires substantial amount of work because you have to make sure that your interface remains consistent. Porting to another architecture has many more implications.
Proprietary software belongs to some organisation which works for profit. So from their perspective it’s not worth the effort to port their software to a less used OS let alone a different architecture. For example photoshop is widely used but still it’s windows and Mac only because adobe doesn’t see any benefit in porting to Linux.
As for the free software which supports different architecture you will always find some link to binaries or the source.
In summary we can say that if you developed a new architecture why would other people write software for that until of course it becomes something like x86 or arm.

What features IBM Worklight can and can not provide in native mobile app developing?

I've already read this:
IBM Worklight - Which features a Native app cannot use?
but it's a little old now and I'm asking:
what kind of features are still missing while developing a native cross-platform mobile app in the realm of business applications & banking tools using Worklight (are JSONStore and Direct Update still unavailable? There are further features missing?);
what are the CONs, in general, of working with such framework despite of using native SDKs (like the cross-platform struggle to keep up with the native platform roadmap, framework infrastructure weight, performance issues, general trade offs, etc.).
Any reference to Worklight documentation is welcome.
Thank you in advance
The essence of native development differs greatly than that of hybrid development.
In native development Worklight provides a set of APIs that allow you to work with the Worklight Server and the features that surround it (as listed in the question you've linked to),
Whereas in hybrid development you also get features related to the client-side. These client-side related features are meant for web development, so there is no correlation between the two (native and hybrid).
what kind of features are still missing while developing a native
mobile app in the realm of business applications & banking tools using
Worklight (are JSONStore and Direct Update still unavailable? There
are further features missing?);
So the list has not changed much:
Starting Worklight 6.2, JSONStore is supported in native development as well
Push Notifications in WP8 is now supported in native development as well
As for Direct Update... this feature is meant to update web resources, not native resources. Also, such updating of native resources is not allowed by the platform so there is no Direct Update support in native development.
what are the CONs, in general, of working with such framework despite
of using native SDKs (like the cross-platform struggle to keep up with
the native platform roadmap, framework infrastructure weight,
performance issues, general trade offs, etc.).
You handle native development as you would always handle it. The framework only provides you with the tools to use what Worklight provides on the server-side.

Mobile App - Targeting iPhone, WP7, Android, and Blackberry

Is there a sane way to develop a cross platform Mobile app? We want these to be native apps on each platform, and not necessarily some kind of web page.
Currently we're thinking to split it into two languages:
C# backend (business logic)
--> Standard C# app for WP7
--> App built on MonoTouch for iPhone/iPad/etc.
Java backend (business logic)
--> Standard Android Java app (MonoDroid version of C# not ready
yet)
--> Standard Blackberry Java app
We could also develop initially in C# and use one of the conversion tools out there to get our C# converted into Java as a starting point.
Is there another approach? Our skillsets include mainly include a strong C# .Net background, and minor Java experience.
We don't really want to go low level and use something like C/C++ to get the job done. These are usually going to be simple LOB applications that communicate to some web service.
Side Question: how do game devs like the makers of Angry Birds do it?
UPDATE:
MonoDroid is now officially released. So it seems you would only need to use Java for the BlackBerry. We are considering not developing for BlackBerry at all, because developing for the other 3 platforms has been simplified. There is definitely some cost involved, as MonoTouch and MonoDroid are both $399 and you would also need a license for Visual Studio (this doesn't include cost for App store, etc.).
There's no good simple answer that I know of for all mobile platforms. You can use development environments like Appcelerator Titanium, which cross-compile to native code on various platforms (right now, for instance, I think Titanium supports iOS and Android, with plans for Blackberry). However, these usually have a limited API that you have access to, and you still end up needing to design different UIs for the different platforms (in my commercial work, I have never successfully used such a platform)
You could also design all the business logic in a web-services back end, and then just write "thin client" apps for each platform. This works, but of course requires network access when the end user wants to use your app. (Usually it'll be there, but sometimes may not)
Ultimately, I usually end up doing what you propose -- writing the basic business logic in a couple of different languages as generically as possible, and then bundling that in with custom UI/device code for each platform. Haven't found a better way myself....
(BTW, I believe games like Angry Birds are written largely in OpenGL and then loaded onto the OpenGL processor on each platform. But I could be mistaken...)
Those are some great answers. I agree, x-platform development is still very primitive. I'd like to add 2 points:
1) You do not need to write your backend in different languages. Choose one language (based on your comfort level, performance etc. criteria) and then connect from your platform-specific apps directly to the backend. If your backend is server-side code, one way of talking to it would be via XmlHttpClient. If it's a piece of native code common across various apps and is written in say C++, you can use JNI from Java and wrapper assembly from C#.
2) Another reason for avoiding x-platform tools is that you'd always need to wait for them to support the new APIs released by the platform vendor (Apple, Google, MSFT etc.). Once these companies release new APIs, the tools will need to be updated and only then will you be able to use the new APIs.
I don't think this is (easily) possible, if you're not using some HTML5 (jquerymobile etc.) in a WebView in your own app (looks like a real app, but still you will somehow see that it's not) instead of the normal browser. You can still use some native API from the device (accelerometer,...).
There are (commercial) platforms like Sybase Unwired Platform that help you in generating some client code. Afaik for Blackberry and Windows Mobile even some UI can be generated out of the business objects on the server. But to me it sounds that this might be too heavy-weight for your case.
Regards,
Martin

Architecting a Complex iPhone Application?

I am comming from an enterprise java development organization where we did development in nicely seperated re-usable layers. Persistency layers, Service layers, etc etc.
Now, I am looking for iPhone example apps or documentation on how to architecture complex iPhone projects. Most books & apple examples show you very limited code & architecture. They are not usable imo.
What I am also looking for is info on how to setup a continuous-integration build system which runs all my unit tests on code checkin & reports the unit test findings to a system where we can see the results.
For our java projects, we use svn, mvn & sonar for this. What's apple's equivalent for this setup? Is it even possible?
So, to summarize my questions:
Q1: Are there any examples or books on complex iPhone project architecture?
Q2: How do we setup a continuous-integration build system?
How complex of an example would you like? This question links to a number of non-Apple open source iPhone applications, including my own. Some of the applications out there are relatively complex.
As far as design goes, I'd highly recommend the book Cocoa Design Patterns. While not strictly for the iPhone (given Cocoa's beginnings at NeXT and more recent presence on the Mac), the design patterns covered are core to the architecture of the Cocoa frameworks and Cocoa applications.
I'd also recommend paying for the WWDC 2009 videos and watching the sessions "iPhone User Interface Design", "Effective iPhone App Architecture", and "Prototyping iPhone User Interfaces". There are a lot of good suggestions for architecting iPhone applications in these sessions.
I've used unit tests with my applications, but I have not done any form of continuous-integration building. However, this question looks to have a lot of good information on doing continuous integration with Xcode.
The heritage of the iPhone dates back to OpenStep by NeXT Computer. For some time, NeXT's primary focus was custom, enterprise applications. The technologies that are in-play on the iPhone are well proven in enterprise environments. NeXT was one of the orginal advocates of object technology, patterns, and MVC in particular.
That said, some of what used to be available in Openstep is now gone. NeXT had a radically advanced ORM system (Enterprise Objects Framework - http://en.wikipedia.org/wiki/Enterprise_Objects_Framework) that, although is still in use internally at Apple and powers iTunes/etc, is now deprecated for customers using Objective-C (a Java version still exists). A lite ORM, Core Data (http://developer.apple.com/macosx/coredata.html), has taken its place and is now available on the iPhone. SQLite (which is awesome) is also bundled on the iPhone and available for developers.
Another fly in the ointment is that the current version of XCode for the iPhone has a limited grasp of subprojects/frameworks, so it is more difficult to partition reusable code than it used to be. Tim Wood, of Omni, provides some details on how to manage frameworks within XCode on the iPhone (http://blog.omnigroup.com/2008/10/01/using-frameworks-in-iphone-applications/) Unfortunately, the process is not as easy as it ought to be.
I am not sure what books are available, but almost any former Openstep developer is going to have enterprise development expertise. You might consider pulling one into your project to help things along.
svn and mvn are available/bundled on OS X. There are also options for pulling in other, open source packages through systems like fink or MacPorts:
http://www.finkproject.org/about.php
http://www.macports.org/
http://github.com/mxcl/homebrew
There are also several framework options that support TDD.
Test Driven Design for iPhone Native apps
It does not look like sonar groks Objective-C at this time. Depending on your options, maybe you could develop a module for this?

Guide for developing J2ME applications

I am new to J2ME and what I have now is Netbeans 6.7.1 IDE. Is there any basic guide for developing Mobile applications in Netbeans 6.7.1? Please provide me the links.
Netbeans.org itself has great tutorials for mobile development in Netbeans. And that is what you need:
http://netbeans.org/kb/trails/mobility.html
For examples this is a very good Quick Start for Netbeans J2ME development:
http://netbeans.org/kb/docs/javame/quickstart.html
I think this book best source for J2ME with Netbeans:
Kicking Butt with MIDP and MSA: Creating Great Mobile Applications (The Java Series)
Book Description:
The release of MIDP 2.0 and the introduction of the new Mobile Service Architecture (MSA) are generating momentum for the Java ME platform. As more and more Java-enabled mobile devices become available and more service providers become open to third-party development, the demand for customized applications will grow dramatically. Now, there's a practical, realistic guide to building MIDP 2.0/MSA applications that are robust, responsive, maintainable, and fun.
Long-time Java ME author Jonathan Knudsen offers real solutions for the complex challenges of coding efficiency, application design, and usability in constrained mobile environments. Experienced Java developers will master MIDP 2.0 and MSA programming through clear, carefully designed examples. Downloadable code is available for both NetBeans Mobility Pack and the Sun Java Wireless Toolkit. Kicking Butt with MIDP and MSA's wide-ranging content covers:
Pushing MIDP's limits, and exploiting MSA's full power
Using MIDlets, Forms, commands, core classes, and invocation
Building effective mobile user interfaces
Designing graphics with the Canvas, the Game API, SVG, and 3D
Providing storage and resources: record stores, FileConnection, and PDA PIM
Internationalizing mobile applications
Networking via WMA, Bluetooth, Web services, and SIP
Parsing XML documents
Implementing audio and advanced multimedia
Securing mobile applications with SATSA and the Payment API
Building advanced location-based applications
Designing applications for multiple devices
Creating end-to-end mobile application architectures
Tell what platform you are developing on so that the tools available for you can be given.
Also, you most definitely want an emulator so that can test your applications directly on your computer (Saves time).
Honestly, can't give much more advice than to know java well and to use google + stackoverflow. Those are what I did and ended up developing a commercial app in j2me just fine.