Search blog.co.uk

  • GInfoWindow - To customise or not to custom... That is the question...

    I've recently finished conducting research (and a few experiments) with customising the Google Maps (GM) popup "GInfoWindow" window and wanted to share the results. The GInfoWindow is the window which is typically displayed when you click on a GM pin, and one of the key questions that is often asked is how customizable is this window framework? My thoughts  :

    The actual HTML structure and code framework of the default GM popup window appears fixed and is controlled internally within the GM API code

    • As such, it will not be easy to alter colours or styles of the white bubble itself, particularly if you want to leverage the tab functionality provided (Blog comments seem to indicate that attempting to alter the CSS of the bubbles leads to strange results)
    • It appears capturing standard DOM events on tabs is not very easy, such as onclick or onmouseover, using this implementation. This means that it's not easy to change the colour or style when clicking or hovering over a tab
    • The basic size of the InfoWindow can be altered, as can the tab width (and allowable characters), but anecdotal blog information would indicate this isn't as flexible as it should be
    • The main content of the InfoWindow can contain any HTML with any style. However, the HTML will always be surrounded by the GM bubble and it's white border
    • This default tabbed InfoWindow handles a lot of the basic window functionality internally, and is easy (and hence time efficient) to code

    There are open source implementations of custom InfoWindows which the popup window to be styled in any manner required

    • For cool examples have a look @ http://gmaps-utility-library-dev.googlecode.com/svn/trunk/extinfowindow/examples/cssSkins.html
    • Using this approach you have complete control over the popup functionality, and can capture mouse events such as clicking and hovering
    • With a quick inspection it looks like there will be substantially more programmatic work required if you do use these custom InfoWindows, especially if you want tabs, as you have to code the tab framework yourself (re-inventing the wheel to some degree)

    The decision to implement (or not) your own InfoWindows using open source frameworks also has other plus and minus points in relation to being coupled (tied-into) Google's API and code

    • Implementing your own code means that you will be less coupled to Google changes (for example, Google rolls out new code quite often which isn't always fully backward compatible, and can cause existing pages to look strange)
    • On the flip side of this, being less tied into Google means that you could spend a long time implementing your own windows only to find that you end up throwing the work away when Google changes the GM API or releases it's own all-singing-and-dancing version of customisable InfoWindows next month...

    More info and an API reference can be @ http://code.google.com/apis/maps/documentation/reference.html#GInfoWindow

    My personal recommendation would be to utilise the open-source frameworks and code some of the InfoWindow functionality yourself as this essentially unshackles the design. However, as this could require a lot more development time ultimately it's a decision that needs to be deliberated.

    I hope this helps, and if it does then please let me know!

    Daniel

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Daniel Bryant (Director) | Tai-Dev Ltd www.tai-dev.co.uk - IT Consultancy Services Specialising in JEE, Web 2.0 and RDBMS

    Bookmark and Share Follow me on Twitter!
  • Are you seeing the java.lang.NoClassDefFoundError: sun/security/pkcs11/SunPKCS11 error when signing your RIM Blackberry J2ME apps?

    The Problem

    One of the key stages in compiling and deploying a J2ME application to a RIM Blackberry device is utilsing the JadTool to cryptographically sign your application JAR file and convert it to a Blackberry COD file

    An error that has caught me out several times over the last year or so of BB development is this:

    Jar to get signature is dist/blackberry/deploy/demo/unsigned/YW_INT.jar
    java.lang.NoClassDefFoundError: sun/security/pkcs11/SunPKCS11
    Caused by: java.lang.ClassNotFoundException: sun.security.pkcs11.SunPKCS11
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
    Could not find the main class: com.sun.midp.jadtool.JadTool. Program will exit.

    The error typically occurs when I either move development machines or upgrade my JDK - this is because the JDK is itself the cause of the problem.

    The Solution

    The problem is typically (in my cases) caused by attempting to sign a JAR when compiling with a 64 bit JDK. For some reason certain versions of the Sun JDKs don't include the required sun.security.pkcs11.SunPKCS11 package, and in particular none of the 64-bit versions I have used contain this package.

    Accordingly the solution is rather simple: Just install a 32bit JDK along side (or instead) of your 64 bit JDK, and make sure you compile and sign the JAR/COD file with the 32 bit version.

    I hope this helps, and if it does then please let me know!

    Daniel

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Daniel Bryant (Director) | Tai-Dev Ltd www.tai-dev.co.uk - IT Consultancy Services Specialising in JEE, Web 2.0 and RDBMS

     

    Bookmark and Share Follow me on Twitter!
  • Using Prototype and want to remove all CSS classes from an element?

    Although the JavaScript Framework Prototype has a lot of cool functions and features for adding and removing individual CSS classes to and from an element, it doesn't have any function to remove ALL classes.

    Therefore I've created a simple little function that when passed an element as a parameter will remove all CSS classes from this element in a single call...

    function removeAllCssClasses(el) {
    var classArray = $(el).classNames().toArray();
    for (var index = 0, len = classArray.size(); index <len; ++index) {
    $(el).removeClassName(classArray[index]);
    }
    }

    Don't forgot that as this function uses some of the Prototype magic you will obviously need to import the prototype.js file into any page that you use this function on.

    Daniel

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Daniel Bryant (Director) | Tai-Dev Ltd www.tai-dev.co.uk - IT Consultancy Services Specialising in JEE, Web 2.0 and RDBMS

    Bookmark and Share Follow me on Twitter!
  • Thinking of increasing compilation speeds in Netbeans with a shiny new SDD? My advice is to think again...

    Due to requirements of a JEE project I am currently working on I am frequently having to perform a full clean and build compilation cycle on the project code within Netbeans. Needless to say this can consume quite a bit of time, usually 2 minutes+, and when I mention that I may compile 10-15 times an hour you can see the problem...

    I'm fortunate to have a fairly hefty development PC (Intel Core 2 Quad @ 2.40GHz, 4 Gb Corsair RAM, 150Gb WD Velociraptor HD), and after a quick investigation I identified the slowest link in the compilation chain was the physical manipulation/transfer of data on the HD (litterally thousands of files being created and destroyed per build)

    I've been hearing good things about the current breed of Solid State Drives (SDD) and so I decided to purchasea Samsung SSD -  SAMSUNG PB22-J 128GB 2.5" SATA-II MLC SOLID STATE HARD DRIVE - thinking this would speed up compilation...

    The Results?

    There is no denying that the general performance of the PC and Windows improved dramatically - Vista booted in half of the time, applications (including Netbeans) opened much faster, and so all was good?

    Not exactly... Although my development environment became more responsive, and localhost servers started much faster, the actual compilation process became slower... yep that's right, cleaning and building became much slower!

    A build (no clean) was sometimes faster than before, but sometimes up to 30 seconds longer when performing other tasks (which didn't used to affect compilation time). A full clean and build took up to 4 times longer than before - sometimes over 10 minutes!!

    As you can imagine I wasn't best pleased, and after a bit more thorough research on the web I have learned that although SSD are much faster for reading large blocks of data and even locating small amounts of data rapidly, many drives are not suitable for reading/writing small files concurrently due limitations in the drive controller (source: http://www.wysk.info/?p=56) Of course, reading and writing multiple small files is exactly what happens when compiling - d'oh!!

    Hence I have reinstalled my Velociraptor....

    Summary

    In a nutshell if you want to improve your HD performance when compiling:

    • Utilise with a Velociraptor HD - if you are gonna stick with a mechanical drive, this is the best you can get (I was being greedy by thinking an SSD could be better :) )
    • If you really want to go the SSD route, make sure you spend some extra cash on getting a drive with a good controller, such as the Intel X25-M
    • Maybe get extra system RAM and utilise a RAM-drive http://coffeecokeandcode.blogspot.com/2008/08/netbeans-on-speed.html I'm off to try this now...

    Additional Resources

    I hope this helps, and if it does please let me know!!

    Daniel

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Daniel Bryant (Director) | Tai-Dev Ltd www.tai-dev.co.uk - IT Consultancy Services Specialising in JEE, Web 2.0 and RDBMS

    Bookmark and Share Follow me on Twitter!
  • Problems starting GlassFish when upgrading/changing your JDK? Pointing the fish to the new pond...

    The Problem

    If you upgrade or otherwise modify your JDK/JVM/JRE installation (such as upgarding to a new version or changing your directory structure) when you have a GlassFish installation running you may find that GlassFish will no longer start after you reboot the server, even if you update your JAVA_HOME environment variable accordingly...

    The Solution

    You will need to update the envionrment variables stored in the asenv.bat file associated with GlassFish. This file is typically located at

    <glassfish-install-dir>/config/asenv.bat

    Locate the line starting with

    set AS_JAVA=<old-jvm-dir>/..

    and enter the dir of your new JVM/JDK/JRE installation, not forgetting to include the "/.." at the end of the path. For example my value is

    set AS_JAVA=D:\Java\jdk1.6.0_16\jre/..

    I hope this helps, and if it does please let me know!!

    Daniel

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Daniel Bryant (Director) | Tai-Dev Ltd www.tai-dev.co.uk - IT Consultancy Services Specialising in JEE, Web 2.0 and RDBMS

     

    Bookmark and Share Follow me on Twitter!
  • Tai-Dev helps Triopsis as they become one of the Guardian's "Top 100 tech-media companies"

    Recently the UK's Guardian newspaper announced it's "Top 100 tech-media companies" for the current year and one of Tai-Dev's current clients, Triopsis Ltd, was included in this influential list. Triopsis uses a SaaS business model to offer a suite of mobile device and web-based applications that enable companies to capture and manage visual business information in a highly effective fashion. The 100 companies were picked for their innovation and creativity over the past year in areas as diverse as mobile applications, racing games and music recognition.

    Tai-Dev has been instrumental in designing, architecting and implementing TriOpsis' flagship initial product, the Retail Display Manager (RDM). The RDM consists of a mobile phone-based J2ME application, which is utilised to capture images, such as point-of-sale merchandise displays or evidence of health and safety incidents, in addition to geographical (GIS) data and other associated metadata. This data is then transferred via HTTPS to a JEE application which provides a rich and highly dynamic Web 2.0 style front-end. This interface enables the user to view and manipulate data (making extensive use of the Google Maps API), perform statistical analysis and extract business reports.

    The RDM is currently being utilised successfully in production by companies such as Sequel UK, the UK distributor of Guess Watches and GC Jewellery. Further information on the RDM product can be found at Triopsis' website www.triopsis.com

    Tai-Dev is currently working with Triopsis on designing and implementing further additions to their product suite, such as the Asset Manager (for managing a diverse range of business assets) and Saftey Net (a Health and Safety reporting application), which promise to push forward the state-of-the-art in both the collection of visual business information via mobile devices and also the real time display and manipulation of the resulting GIS-based data.

    More Information

    http://www.guardian.co.uk/tech-media-invest-100/top-100
    http://www.guardian.co.uk/tech-media-invest-100/innovation-nation

    http://www.triopsis.com
    http://www.tai-dev.co.uk

    Daniel

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Daniel Bryant (Director) | Tai-Dev Ltd www.tai-dev.co.uk - IT Consultancy Services Specialising in JEE, Web 2.0 and RDBMS

    Bookmark and Share Follow me on Twitter!
  • Help for anyone unable to install a signed J2ME MIDlet OTA on a Mobile Device (maybe a Samsung Omnia with WM6.1?)...

    The Problem:

    Recently an end user with a Samsung Omnia (i900) device could not install a signed MIDlet that would install fine on a handful of other devices. The device would download the JAD from our server successfully (after following a link provided via SMS), and prompt the user to accept that the MIDlet was from a third-party provider and was signed accordingly. However, as soon as this was confirmed the device would display "Internet status: CONNECTING_TO_SERVER" and appear to hang for 30-60 seconds after which an error was displayed “cannot connect to server”. The annoying thing was that the JAD/JAR would install fine via a manual copy of the JAD/JAR from PC to mobile device via USB, and several other mobile devices could install the JAD/JAR OTA fine...

    I couldn’t find anything useful via a Google search or several posts to appropriate forums, including Samsung’s own Java Forum and the WM6.1 forum, resulted in some interesting discussions (many thanks to Ravztech in the Samsung forum!), but ultimately no solution...

    The Solution:

    After much head-scratching and many experiments we eventually figured out that the problem was caused by the configuration of the device (which according to anecdotal blog evidence is apparently quite common with Samsung phones...), and the device JVM itself was not configured to connect to the Internet. A simple visit to the JVM options rectified the problem:

    Start > Programs > Java > Menu > Java Settings > Changed "Select Network" to "The WAP Network" > Ok

    Bam! Job done...

    Some other thoughts / diagnostic paths...

    For anyone else suffering from a similar problem (but isn’t helped by the advice above) I thought a brief outline of my trouble-shooting/diagnostic path might be useful. Of course, I have to say this isn’t all my own work – over the time I have been a J2ME developer I have gleaned a lot of these ideas from various forums and guides, and so a big thanks to all the bloggers/posters who have helped me in the past!

    1. Problem: You can’t install a signed MIDlet OTA on a specific device? Read on...
    2. Attempt to manually install the JAD/JAR on the device by copying the files via USB or Bluetooth etc.
      • If the application does not install then most likely you will be given more information from the device error messages, such as
      • invalid certificate (check the date and time on the device is correct, check the certificate) or a
      • corrupt JAD/JAR (rebuild)
      • a random message about third-party apps (check the device is not install-locked – early Samsung phones only allowed a specific class of signed apps to be installed. I won’t go into detail here, and a Google search on the issue will turn up more info)
      • If the app installs fine manually then this points to an OTA install issue – read on...
    3. Check that your application server which is hosting the JAD/JAR files has the MIME type correctly set for both of these file types. Check out the info under the heading “Remote Deployment” in this link http://developers.sun.com/mobility/midp/articles/deploy/ and if you’re using GlassFish my earlier post in regards to setting the MIME type for Blackberry OTA installs may help http://tai-dev.blog.co.uk/2009/07/09/glassfish-j2me-blackberry-install-grrr-907-invalid-cod-http-error-6478856/
      • If the MIME types are correctly set then read on...
    4. Alter the “MIDlet-Jar-URL:” property in the JAD to be an absolute reference to the application JAR file (and not simply a relative reference)
      • Some mobile devices require that an absolute reference is required...
      • If this doesn’t help, then read on...
    5. Try serving the JAD/JAR via HTTP and HTTPS
      • Some mobile devices allegedly have issues with installing JARs via HTTPS (or HTTP)
      • No help? Read on...
    6. Try serving and installing the JAD/JAR from another server
      • This works? Sometimes a server is just poorly configured (buggered in technical terms) and so you need to figure out what is different between the server that allows installs and the server that doesn’t
      • No joy? Read on...
    7. Try installing a version of the application which isn’t signed?
      • If this works, it could indicate that the device itself has problems with installing signed apps – probably best to post to the device manufacturer forums and hope someone has an answer...
    8. Try installing another person’s J2ME app.

    I hope this helps, and if it does please let me know!!

    Daniel

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Daniel Bryant (Director) | Tai-Dev Ltd www.tai-dev.co.uk - IT Consultancy Services Specialising in JEE, Web 2.0 and RDBMS

    Bookmark and Share Follow me on Twitter!
  • Is anyone else confused by Microsoft's behaviour in the mobile market? Now MS is giving their mobile apps exclusively to Nokia...

    I have just read on the BBC Technology RSS that Nokia has formed an alliance with Microsoft and is planning to ship Nokia mobile devices with mobile-flavoured MS apps such as Word in a bid to compete with RIM Blackberry...

    Does this strike anybody as a strange move for Microsoft?

    MS are already having problems increasing the popularity of Windows Mobile (WM) phones, and the introduction of the iPhone and Andriod platforms has not exactly helped their case... I have also read recently that the vast majority (80%) of WM6.1 phones are manufactured by HTC and there are rumours suggesting that HTC may increasingly move away from WM in favour of BREW (BMP) and Android...

    Nokia owned Symbian is currently the worlds leading mobile platform, and surely hanging them the exclusive keys to the MS mobile apps only serves to strengthen the position of a direct competitor Nokia/Symbian in the mobile market?

    Could it be that the MS execs are so keen to prevent the likes of RIM/Google from maintaining/gaining share in the enterprise mobile platform market that they will happily take actions that hasten the demise of their own mobile platform... Some analysists are already ringing the death-bells for Windows Mobile...

    Daniel

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Daniel Bryant (Director) | Tai-Dev Ltd www.tai-dev.co.uk - IT Consultancy Services Specialising in JEE, Web 2.0 and RDBMS

     

    Bookmark and Share Follow me on Twitter!
  • Is your J2ME mobile app hanging when deployed to a physical Blackberry Device? (for example the 8900...)

    The Problem

    Recently I came across a strange problem when deploying a Java J2ME application to a new Blackberry Phone (the 8900 "Javelin" Curve). The app simply captures data from the user, performs a little bit of processing and sends the resulting data to a server over http/https. The app installed and ran absolutely fine on several older BB devices (such as the 8320 Curve) and also the new 8900 simulator. However, when I installed the app on an actual physical 8900 device for final testing the app would hang at arbitary points when sending or receiving data over http. Tracking down the cause of the problem took a long time. The first step was looking at the Blackberry event log (by holding the alt-key and entering LGLG via the keypad), and it showed that a communication Exception was being thrown around the time of the hang.

    The problem is that no Exception was being caught be our code (as we had try-catch blocks at appropriate places). Running the app through the Blackberry JDE with the phone debug-attached (via USB ) again confirmed that no Exception was being seen within the application, but we did learn that the frequency of Garbage Collection was increasing exponentially as the number of http communications were established and closed. At this point I assumed that either the http connections to the server were not getting closed properly, or there was a strange memory leak in the app somewhere, but why were we not seeing this problem in other BBL devices?

    My Solution

    After posting in the Blackberry J2ME developer forum (see link below) and playing around with the app's debug output we eventually tracked the main cause of the problem down to http connections not being closed, but for a strange reason... A lot of code within the http communication class was written as follows:

    try {

    HttpConnection hc = null;

    try {
    hc = (HttpConnection) conn.open("<<url>>");
    } catch (IOException iox) {

    //do stuff, but although execution to continue in this method
    }

    hc.close();

    }catch (Exception e) { //do stuff }

    Changing it to close the connection in a finally statement solved the issue:

    try {

    HttpConnection hc = null;
    try {
    hc = (HttpConnection) conn.open("<<url>>");
    } catch (IOException iox) {
    //do stuff, but although execution to continue in this method

    } finally {

    hc.close();

    }catch (Exception e) { //do stuff }

    I'm not exactly sure why, although not including the call to the close() method in a finally block (as demonstrated by the first code fragment) could be considered bad form, the connection should have been closed after any IOException was caught? Regardless changing all of the connections to close in the finally method eliminated the problem we were seeing...

    If this didn't help, here any some other causes

    Upon reading various forums I also learned that a J2ME app hanging on a BB can also be symptomatic of the following causes (which may be worth further research if my solution didn't help)

    • UI Dialog boxes being hidden (behind the current app) which require user input
    • Garbage collection due to memory leaks etc. (full GC can take up to 30 seconds to complete)
    • Deadlock between competing threads
    • Incorrect threading in general i.e. attempting to open socket connections using the main thread (a new thread should be spawned)

     

    Useful links

    My BB Forum Post (thanks to John for replying) : http://supportforums.blackberry.com/rim/board/message?board.id=java_dev&message.id=51749#M51749

    Daniel

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Daniel Bryant (Director) | Tai-Dev Ltd www.tai-dev.co.uk - IT Consultancy Services Specialising in JEE, Web 2.0 and RDBMS

    Bookmark and Share Follow me on Twitter!
  • Building and deploying J2ME business apps in Q3/Q4 2009? A list of physical devices on which to test to ensure maximum compatibility...

    I'm sure you've all heard that the original Java slogan of "write once, run everywhere" was converted to "write once, test everywhere", and this has never been more true when deploying J2ME apps to mobile platforms. It is not always possible to restrict the devices/platforms that your end-users will be using , and therefore my experience has lead me to conclude that in order to ensure maximum compatibility between your app and the various devices on the market you have to test the app on a variety of physical devices. This leads to the important question, which devices do you choose?

    Platforms

    There are 6 main mobile device operating systems/platforms in the consumer market today:

    1. Symbian Series 40 (S40)
    2. Symbian Series 60 (S60)
    3. Windows Mobile 6.X (WM6.X)
    4. Google Android (Android)
    5. Apple iPhone (iPhone)
    6. Research in Motion Blackberry (BlkB )

    There are also additional small-scale players, but for the sake of the argument I will focus on these. On a related note, there is an excellent list of available development platforms/frameworks and an overview of their capabilities at Wikipedia http://en.wikipedia.org/wiki/Mobile_development

    J2ME Support

    It is well known that the Apple iPhone OS does not support the installation (at least natively) of J2ME apps. You can hack an iPhone to allow the installation of J2ME apps, and on a more official note there is promise of a JVM being available via the app store. At the current time this effectively wipes out the iPhone from the rest of our discussion.

    The rest of the platforms listed above natively support J2ME, and although different OS/platforms all support different JSRs the core functionality offered by the J2ME APIs should be consistent... right? And of course, all of the implementations of each specific OS flavour behave exactly the same... don't they?

    Well no, often this is not the case. My experience indicates that you have to install and test an app on a subset of devices available in the market to ensure the greatest level of compatibility. Having said that, if you need a guarantee that an app will function as expected on a specific device you must install and test the app on the actual device! A few examples of the problems I have seen should drive home the point

    • An http communication module within an app deployed in production for 6 months to a BB 8320 does not work (and simply hangs) on the new BB 8900
    • Many S40 phones do not arrange native J2ME screen components in a consistent manner (leading a colleague to create his own custom screen widgets which provided more control)
    • Accessing the multimedia/camera functionality on various implementations of the S60 platform is not consistent
    • RMS Storage behaviour is not consistent across devices (such as the maximum storage space available, and the method for determining if this space has been exceeded)

    The List of Phones

    The main outcome of this article is that I have created a list of mobile devices that I would recommend you test your J2ME apps on if you are looking to deploy them into the business world over the next 6 months, and you can’t restrict which devices will be used by your end-users. I've compiled the list by looking at the major manufacturer websites, the current personal/business phones being offered by the major network providers and a few choice blogs.

    The list is in an approximate order of my thoughts on predicted prevalence/desirability in the business community. I have also indicated the OS/platform of each device, and unless otherwise stated all devices have a built-in camera and GPS

    1. RIM Blackberry Curve 8900 (BlkB ) http://uk.blackberry.com/devices/blackberrycurve8900/
    2. Nokia N97 (S60) http://europe.nokia.com/find-products/devices/nokia-n97#/main/landing
    3. Nokia 5800 (S60) http://www.nokia.co.uk/find-products/all-phones/nokia-5800/specifications
    4. HTC Touch Diamond2 /Pro2 (WM6.1) http://www.htc.com/uk/product/touchdiamond2/specification.html http://www.htc.com/www/product/touchpro2/overview.html
    5. Nokia 6300 (S40) [NO GPS] http://europe.nokia.com/find-products/devices/nokia-6300
    6. HTC Hero / Magic (Android) http://www.htc.com/uk/product/hero/specification.html
    7. Samsung Jet S8000 (S60) http://jet.samsungmobile.com/
    8. Sony Ericsson C510 (S60) [NO GPS] http://www.sonyericsson.com/cws/products/mobilephones/overview/c510
    9. Nokia E75 (S60) http://europe.nokia.com/find-products/devices/nokia-e75/specifications
    10. RIM Blackberry Curve 8300 http://uk.blackberry.com/devices/blackberrycurve8300/

    If anyone has any comments or different thoughts, I would always appreciate hearing them...

    Daniel

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Daniel Bryant (Director) | Tai-Dev Ltd www.tai-dev.co.uk - IT Consultancy Services Specialising in JEE, Web 2.0 and RDBMS

    Bookmark and Share Follow me on Twitter!
RSS Feed
RSS 1.0
Posts
Comments
RSS 2.0
Posts
Comments
Atom
Posts
Comments
Email subscription

You can receive the posts of this blog by email.

Footer:

The content of this website belongs to a private person, blog.co.uk is not responsible for the content of this website.