Если для просто мобильников, то надо смотреть в сторону
]]>J2ME]]>. В качестве инструмента разработки можно порекомендовать
]]>NetBeans]]> с плагином
]]>Mobility Pack]]>.
Если речь идет о смартфонах, то, как было отмечено выше, нужно определиться с ОСью: Symbian или Windows Mobile. Про первую сказать не могу, не имел с ней дела, под вторую можно писать на .NET Framework Compact или обычном C++. Соответствующие инструменты входят в состав MS Visual Studio 2005, скажем. Плюс есть еще Embedded VB (Visual Basic) - тоже под WinMobile.
Наконец, если на смарт поставить Java-машину, то можно писать для него и на вышеупомянутом J2ME, хотя этого не пробовал лично.