Java, but not only...
I'd suggest that you consider using a JVM as a technology of choice, because JVM can run any language that compiles to a byte code, not only Java: http://en.wikipedia.org/wiki/List_of_JVM_languages For you to support the application there may be other language that would give you the same result and with which you will be more comfortable. All these other languages support calling Java for the functions/tools/packages that are not available in the given language. Let's assume Java for further discussion. Language considerations: VB & Java are both are procedural languages (you got functions, APIs etc) but the difference is in implementation and "philosophy", thus you are facing complete re-write/re-design). The challenge is if your application uses some Windows native libraries (e.g. for the "flexigrid/spreadsheet") which give you some functionality for free, which you don't have in Java (nor on MAC OS) and that will need to be now implemented even when you run on Windows.