Sun does not provide an implementation of javax.comm version 3 for Windows, but version 2 can be used in conjunction with RXTX; see the javax.comm download page for further information. Other options (which do not implement the javax.comm API) are
SerialPort (commercial, X/Y/ZModem and Kermit implementations are also available)
How can I set the client timeout when making an URL connection?
Starting with Java 5, this functionality is available in the JavaDoc:java.net.URLConnection class and its subclasses (like HttpURLConnection) via the getConnectTimeout/setConnectTimeout methods.
Jakarta Commons HttpClient also supports setting a timeout.
How can I check the type of an image file?
The freely available ImageInfo class can identify certain image types: JPEG, PNG, GIF, BMP, PCX, IFF, RAS, PBM, PGM, PPM and PSD. It also determines certain image properties like height, width and color depth. The Apache Commons Imaging library serves a similar purpose.
How can I send SMS from a Java application?
You'll need an SMS library like smsj, SMSLib or smstools and a provider. You can find the latter by googling for "bulk sms http". This article may also be of interest.
Many cellular providers make an email-to-SMS gateway available. Here are the email addresses for several US providers:
I would probably not use this gateway for bulk message as the providers no doubt have measures in place to prevent abuse.
How can I use a modem from within Java? (or, to put it in another way, is there an implementation of JTAPI?)
The http://xtapi.sourceforge.net/ project "has providers for Microsofts TAPI, Serial Voice Modems, and Voice Over IP utilizing the OpenH323 Projects H.323 stack implementation".
How can I determine the encoding of a given file, or its MIME type?
The jchardet and juniversalchardet libraries try to determine the encoding. This article talks about various approaches to figure out the MIME type; you may have to try out a few of them to determine which one works best in your situation.