It really depends on what you need.
If you merely need to create a few basic diagrams, lately I resort to Google Docs/Drive's drawing features. They're available from everywhere, have decent SVG support and PDF and PNG export features, and are relatively easy to use to create diagrams.
However, that's a really basic approach, better suited for small projects and simple diagrams, and where you don't need to link the model to code.
For Java, in the past I used to resort to the old ArgoUML. It's not the most enterprise-y tool, but it's good enough to produce UML diagrams and generate some initial code (but not really to keep a model and an existing codebase in sync).
For .Net, the later versions of Visual Studio come with some pretty decent diagramming and modelling tools, which are quite OK for small to large projects.
For a more general case, I'd say Visio is quite an industry-standard. It's not the most user-friendly and usable piece of software at first and it looks like you can either only achieve small diagrams or need to spend hours to create your initial templates. But once you've come up with a decent library of visual components and know your way around the program, it's a pretty good all-around diagraming tool, for software, architecture, logic, networking, etc...
Visio being off the charts expensive though, usually the fallback would be ... Dia.
Finally, sometimes I simply use one of my favorite prototying and wireframing tool: WireframeSketcher. It's not meant for diagraming models, but being a wireframing tools (with wiki text support), it makes it quite easy to design simple diagrams as well.
Tell us more about what you need, and maybe we'll be able to provide clearer answers tailored for your expectations.