Smalltalk is interesting, but is even more closed off than Java, and basically requires an entirely different set of tools for working with. It's not really designed to work as a text-based language.
I don't think you've really looked at all the issues with Smalltalk. If you look at squeak, for example, most of the VM is smalltalk, that gets translated to a subset of C, and you only have to implement primitive data types to build a new VM on a new platform.
Gnu Smalltalk is text-file based (and is unusual amongst smalltalks for it).
As for tools, smalltalk provides the tools, they are just different than what is used for other languages. The tools for smalltalk (the browser, monticello, the file list etc) work really well for smalltalk. It's not that you have to learn a new set of tools to use smalltalk, rather that there is no need for any others - nearly 40 years of development has produced a very efficient and intuitive environment.
In my opinion the only place Java beats Smalltalk is in that its threading model is a bit more efficient. In return you are forced to abandon most of the benefits of a dynamic language, and use multiple layers of nearly-C++ to get the job done. Or maybe I just don't understand Java. I don't get why an object has to care about what class a reference dereferences to, and why methods have to have all that type declaration fluff around them. Maybe I'm just old though.