I participated in writing a large JavaScript application with SproutCore and Cappuccino and without any "macro programs". That's what I think:
First of all, the same principles of โgood designโ that you acquired in your work with Java still apply: do not write spaghetti code, encapsulate individual problems and use MVC.
A lot of people start writing a web 2.0 or web 3.0 application (whatever that means), just add jQuery to it and go down the path of pain and suffering, as their code becomes more and more and completely invisible,
Large frames such as Cappuccino or SproutCore will help you avoid this. Cappuccino is great for desktop applications, while SproutCore has shifted its focus from 2.0 to โweb-styleโ applications like New Twitter, while still providing you with great ways to structure your applications and your code.
Now for your specific areas or interests:
Environmental development
I personally use MacVim. I heard well about Cloud9IDE built into the IDE for JS development. For Cappuccino, you can use the Apple Xcode IDE, even for developing user interfaces (which is very cool).
Both Cappuccino and SproutCore applications can be tested directly in the browser without the need for a web server. If you need to talk to the web server (which you probably want), Ruby on Rails or node.js are usually used to quickly launch the backend.
Debugging methods
Debugging is still a kind of painful place when it comes to JavaScript development. Google Chrome Developer Tools are the best at the moment. You can set breakpoints directly in the browser and all sorts of neat things. This is the tool you want to use.
Device testing
SproutCore uses QUnit, Cappuccino comes with OJUnit / OJSpec. Then there are projects like JSDOM and env.js that allow you to simulate a browser on a server and give you an environment to run automated tests without a browser.
Also projects like Selenium or Jasmine are worth checking out.
Profiling / Tools
You can perform profiling using Chrome Dev tools . YSlow is great for general profiling web applications (including asset loading, etc.).
System design
Use MVC from get-go. Many people start with a small application and add JavaScript here to read the value from the field and some more JavaScript to update the label. They do it again. And again. And dinner is served: spaghetti code. Use a framework like SproutCore or backbone.js to prevent this and structure your code.
This is a great tutorial for SproutCore , this is one for the .js trunk .
The same goes for Cappuccino, here is a tutorial that I wrote about a year ago . It is a bit outdated, but gives you a general idea. Here's the last demo I made for an article I wrote for MacTech magazine in May.
So structure your code like you would in any other development environment. Perhaps read this book or this book . These videos are also a great resource .
Interface design
For Cappuccino, you can use the Apple Xcode Interface Builder to graphically display the user interface. For most other systems, you will create your own interface with standard HTML and CSS.
If you want to develop for mobile, you should read this article .
Code design
Check out the books and videos I mentioned above. And consult this general coding style . Naturally, people do not agree with some aspects of the style outlined on this page, but this is a good starting point.
JavaScript is an exciting development environment and it has a very vibrant community! You have to join in the fun! I hope my opinions were useful to you.