[write-up] 2011-July-07 meeting - topic: Java part redesign

Robert Schuster r.schuster at tarent.de
Fri Jul 8 11:44:30 CEST 2011


Hi guys,
here is the write-up of yesterday's meeting. If you miss something feel
free to add it as a reply to this mail. Interestingly the last meeting
took place *exactly* a month ago. :)

necessitas meeting 2011-July 6 - 7pm (GMT+2)

location:
#necessitas at irc.freenode.org

attendees:
BogDan Vatra - bog_dan_ro
Ray Donnelly - mingwandroid
Robert Schuster - rschus
pcspets
thp

The meeting began a few minutes after the scheduled time and its sole
purpose was to discuss and exchange ideas about the upcomming rework of
the Java part. Prior to the meeting Robert Schuster had already
posted[0] a drawing and an explanation of the Java part design on the
project's mailinglist.

Bogdan mentioned that he was generally OK with the approach and Robert
just explained parts of the idea more in detail.

pcspets wanted to know why the suggestion to write the activity
completely in C++ is not being considered. While the approach is
technically possible it automatically increases the minimum supported
Android version to API level 9 (Android 2.3)[1] which at the moment a
rather steep increase. At the time of this writing the market share for
Android 2.2 is 59.4% and 17.5% for Android 2.1[2]. In other words, we
would could ourselves of off most of our userbase. Robert remarked that
changing to a complete native App wrapper has the potential to simplify
the Application build process a bit but it must be made the sure that
calling Android services works from the native side.

There was also a question about the module called 'Bridge' in the
description of the Java part design. pcspets wanted to know whether this
is what needs to be implemented. Robert answered that this part indeeds
needs to be implemented by the necessitas project but that most of it
already exists and that that code only needs to be moved and made part
of the Android-Qt build.

The discussion then went on to the viability of implementing with as
little Java as possible meaning that there might be quite a few JNI
functions to be called. Robert explained that the Java and the C++ part
should be considered like two sides of the same coin and that it is up
to the person implementing both to find a design which is both efficient
and maintainable. It was reiterated that future compatibility between
the Java and C++ side is no concern with the proposed redesign because
it becomes effectively an internal interface that we (= the project)
have full control over.

There was a discussion about using a very generic Java base class for
all things QtMobility and how this can be used to call different native
code. After finding out that the Java class contains a pointer to a C++
object that we can cast to a known base class and then call a virtual
method (which makes it call the most-specific variant) nobody saw a
problem with implementing the 'general base class' idea. Robert said
that in that case one only needs to register the class' native method
once and do the arbitration via the C++ virtual method call.

Robert and Bogdan agreed that the build process of Android-Qt needs to
learn to:
 * compile Java classes against Android API
 * dexify the Java classes and create APK files
For this to work the build will depend on a JDK and an Android SDK
(*added by editor*: and a chosen acceptable minimum Android API level).

Bogdan suggested the creation of a Wiki page[3] for the Java part rework
effort. Robert agreed on putting all known information into this page.
Work will begin July 8th.

At the end of the meeting everyone had the impression that
implementation problems do not exist anymore and that talking about the
used techniques helped finding this out.

A specific date for another meeting was not made. It is expected to be
announced on the mailinglist when the need arises.

A log of the meeting was posted here[4].

References:
[0] - http://mail.kde.org/pipermail/necessitas-devel/2011-July/000246.html
[1] - http://developer.android.com/guide/appendix/api-levels.html
[2] -
http://developer.android.com/resources/dashboard/platform-versions.html
[3] - http://community.kde.org/Necessitas/Java/Redesign
[4] - http://paste.debian.net/122237/

---

Hope you liked the write-up. :)

Regards,
Robert

-- 
tarent solutions GmbH
Thiemannstr. 36 a, D-12059 Berlin • http://www.tarent.de/
Tel: +49 30 5682943-30 • Fax: fax +49 228 52675-25

Rochusstraße 2-4, D-53123 Bonn • http://www.tarent.de/
Tel: +49 228 52675-0 • Fax: +49 228 52675-25
HRB AG Bonn 5168 • USt-ID (VAT): DE122264941
Geschäftsführer: Boris Esser, Elmar Geese




-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 729 bytes
Desc: OpenPGP digital signature
Url : http://mail.kde.org/pipermail/necessitas-devel/attachments/20110708/6ec537dc/attachment.sig 


More information about the Necessitas-devel mailing list