jYMSG
YMSG Java API - Yahoo Instant Messenger Support for Java
Mini-FAQ

Q: What is YMSG?
It is the technical name of the protocol used by Yahoo instant messaging and chat software - Yahoo Messenger.

Q: What is jYMSG?
It's an API (a software library, or 'package' in Java parlance) which enables Java programmers to interact with Yahoo's messaging/chat services, with the minimum of fuss.

Q: What protocol version does this package support?
Version ten - although some peripheral features are not supported. (See 'Is it version 10 or 11?' below.)

Q: What is YCHT, and is it supported?
YCHT is a dedicated Yahoo chat protocol (Yahoo Chat), for use in simple chat clients. It is preferred by some programmers because of its more readable data format. Many have predicted that Yahoo will phase out YCHT in favour of its big brother, YMSG, eventually. This API does not support YCHT - but does supports the chat features of its bigger brother, YMSG.

Q: Is this API in any way endorsed or supported by Yahoo! Inc. themselves?
No.

Q: Yahoo changed its login a while back, can your API still connect?
Yes. Although many (all?) third party Yahoo projects were locked out for a while, jYMSG was one of the first wave to get back in, less than four days later. Also, this project has one of the cleanest and most efficient (and best documented) implementations of the modified post-January 2004 login process.

Q: Is it version 10 or 11?
There is a discrepancy in the way some third party Yahoo code is versioned. At the time of writing the latest protocol version of Yahoo is version 11 - however Yahoo servers tend to support at least two protocol versions at a time, and their client software also can switch between protocol versions, making it hard to match features with their correct version. When Yahoo changed their service in September 2003, they dropped support for version 9, and changed the login process. This means that the new login process is available from version 10 onwards. My policy is to use the lowest version number that a feature is supported in - so I call the new login process 'version 10 authentification'. Other programmers call it 'version 11' - seemingly for no other reason than it was switched on at a time when 11 was the most recent version.

Q: Hold on, if this is really version 10, then doesn't that mean...?
Yes, in the new Yahoo clients there might be yet another authentification protocol, lying dormant, to be activated when version 10 is switched off! A chilling thought, isn't it? :-)

Q: Is the package 100% pure Java?
Yes, it is written entirely in Java, with no native code at all.

Q: What version of Java is required?
It is known to work under J2SE v1.3, but it will probably work even as far back as JDK v1.1 . The support API requires Swing, and Java2.

Q: What dependencies are there to run/use this package?
None, just the standard J2SE API.

Q: What about J2EE and J2ME?
I see no reason why this package should not work with Enterprise Edition, although it doesn't have any enterprise-specific functionality (whatever that might be!) This package will not work under J2ME, however it might be possible to strip it down and include a radically cut back version in a MIDP 2.0 application. I was hoping to have a stab at this myself, but someone appears to have beaten me to it. Check out the Hiptop project in the links further down the page.

Q: Are you writing an actual Yahoo client in Java?
No. Feel free if you want to write one yourself. Yahoo used to have its own Java client applet, but it was next to useless. A good, solid, highly-functional, messenger client for Java is sorely needed IMHO!

Q: When will webcam be supported in chatrooms?
Yahoo's webcam facility relies upon the JPEG 2000 image format. It might be possible to build in a webcam feature to the support package, thanks to the Java implementations found at this site: Java implementation of JPEG 2000. Alternatively, JPEG 2000 plugins reportedly exist for Sun's Java Advanced Imaging API. If anyone has a go, let us know how you get on!

Q: When will voice be supported in chatrooms?
This technology, to the best of my knowledge, relies upon third party 'codec' type software which Yahoo has licensed and/or brought into their messenger software. Until support for these libraries is available for Java, any attempt to add voice code to jYMSG would be folly. But if you know better, then please get in touch... :-)

Q: When will text messaging to phones be supported?
Again, this relies upon third party code. I'm not entirely sure how Yahoo communicates with mobile/cell phones, but presumably there is some gateway type service which Yahoo runs, translating data from the Internet to phone networks. Interoperability with phone networks like this is beyond the scope of this API.