I am not sure you understand what DI is: if you're programming to interfaces and are passing instances of an interface to a constructor, you're doing DI. You don't need a framework to do so. It's a great pattern to use in other object oriented languages, including ones that let you pass functions. The reason it's a "big deal" in C# and Java is due to these languages lack of support for mixins or multiple inheritance.
I've used DI in C++, Perl and Scala - the only difference being in these languages I didn't need a framework: I used mixins (or if mixins were not available, multiple inheritance in mixin-style) to "wire" the interfaces to implementations.
In Java I ended up either having a big class where I do all the wiring (in my current project: < https://github.com/voldemort/voldemort/blob/master/src/java/... >) or using Guice (Spring is a little too "enterprisey" to be my cup of tea). Yes it's more awkward, but it's certainly possible to write clean and readable (if more verbose) code in Java.
DI comes about as a reaction to use of static methods and more-harmful-than-useful design patterns such as singleton, which have the issue of making it more difficult to isolate specific layers of your code for unit testing.
I've used DI in C++, Perl and Scala - the only difference being in these languages I didn't need a framework: I used mixins (or if mixins were not available, multiple inheritance in mixin-style) to "wire" the interfaces to implementations.
In Java I ended up either having a big class where I do all the wiring (in my current project: < https://github.com/voldemort/voldemort/blob/master/src/java/... >) or using Guice (Spring is a little too "enterprisey" to be my cup of tea). Yes it's more awkward, but it's certainly possible to write clean and readable (if more verbose) code in Java.
DI comes about as a reaction to use of static methods and more-harmful-than-useful design patterns such as singleton, which have the issue of making it more difficult to isolate specific layers of your code for unit testing.