Mobile VoIP Java Client
After watching the BCS Championship game I am in a good mood for a short post. On that topic I start with:
Congratulations Gators! 
Every time there is news about a new Java based VoIP client for mobile phones I get questions about what this really means. This happened again today after it was revealed in recent news that Skype are about to release Skype Lite for Android and other Java enabled phones.
If you read the information closely you will notice that Skype Lite actually doesn’t support VoIP calls at all. For calls even between Skype users it is using the regular cellular voice network. The same is true for other similar offerings by e.g. fring (minifring). This is because it is far from a trivial task to design a generic Java based VoIP client.
Before addressing this topic I will comment on what I wrote in a recent blog entry where I talked about how to create a download free VoIP solution:
“Building a solution that doesn’t require a download is actually practically impossible because of the limitations that a Java Script cannot access audio and video captured on the PC. I.e., only one way streaming is possible for a Java Script based solution. “
It is easy to confuse the Java Script based solution with a plain Java solution, which is what we are talking about here. A Java client can utilize the full Java stack that is supported on the device and hence is not limited to streaming applications only, as the Java Script based client would be.
In theory Java, using the Java Media Framework (JMF) can be used to write a VoIP application but codec support is very limited and significant latency issues do exist, even on powerful PC platforms. This is due to the inefficiency of the Java model (running a virtual machine) as well as the fact that JMF has been developed with focus on streaming applications.
So to answer the question why is it so hard to build a generic Java based client for VoIP several factors have to be mentioned. Maybe the three most important ones are:
1. A fully Java based solution will be too slow to run in real time or take up all available CPU on the mobile device. It is possible to circumvent this issue by using a native library in C or C++ but that requires a library for each platform.
2. Different devices are so different that any attempt to make a generic solution will still need device specific optimization for optimal performance
3. Lack of support in the Java stack for certain important voice related features or poor implementations of the same. These issues are typically related to the sound drivers and network socket drivers and will be device dependent
Tags: Java, mobile VoIP






January 9th, 2009 at 6:08 am
Thanks Jan. Very interesting.
January 9th, 2009 at 6:35 am
Jan,
I totally agree with you – doing a VoIP client that doesn’t require a download is impossible – unless you work with the handset vendor himself (not something that is going to happen for VoIP in 2009).
Going for a downloadable client has its complexities – especially dealing with different phones that have different operating systems and hardware. If you go from voice to video, this becomes even harder.
Tsahi
January 11th, 2009 at 6:51 pm
So, is Flash impossible too? Flash doesn’t use native code, must support different devices, and was developed for streaming media. Your Flash blog implied Flash was possible but just it needed more work and better components. These Java difficulties seem applicable to Flash too. Is there much difference? Thanks.
January 12th, 2009 at 6:32 am
Rick, in principle Flash should work better than Java since it actually is based on native code and isn’t running a virtual machine that chews up CPU. However, given the perfromance on PC and the additional challenges on mobile devices it is obvious that the quality of a Flash based solution is not high enough at this time.
January 12th, 2009 at 8:08 am
Got it. Thanks.
October 3rd, 2009 at 12:39 pm
But what about gizmo. Its a java-based and it can make voice calls. I heard that it works by something called flyvoip but I don’t know what this actually means. Do you have any clue regarding this?
November 24th, 2009 at 4:15 pm
Thank Islam for interest in our product. I a little explain situation with our VoIP Mobile Dialer.
FlyVoIP Software provides mobile dialer for Java, Symbian, Windows Mobile, BlackBerry, iPhone and Android platforms. It works by callthrough and callback technologies.
* ANI Callthrough.
* Callthrough with PIN
* Web Callback
* SMS Callback
* Callback via DTMF.
You can get more info about it from our site http://www.flyvoip.com/ or get brochure here http://www.flyvoip.com/wp-content/uploads/2009/11/Mobile-Dialer-1.6.pdf
Free version of VoIP Mobile Dialer allowed for J2ME platform only. It specialized on Callthrough technology (http://www.flyvoip.com/branded-voip-mobile-dialer/callthrough/) and provides service of dialing for Calling Card owners.