• When Mockito creates a Mock, it does so from the Class of an Type, not from an actual instance. The mocked object simply creates a barebones shell instance of the Class, entirely instrumented to track interactions with it. When test case calls the method, attributes value in mocked object won't change, with no side effect.

Spy will wrap an existing instance. Spied object will still behave in the same way as the normal instance – the only difference is that it will also be instrumented to track all the interactions with it.

• A unidirectional data flow
• No two-way data bindings that lead to cascading updates
• When updates can only change data within a single round, the system as a whole becomes more predictable

ReactJS focuses a lot on treating code as a black box so there is no sort of observable abstraction inside.

AngularJS basically passes data throughout scope as observable data model which is a very leaky abstraction and it forces to compose application not in terms of functions and objects but in terms of directives and AngularJS's model-view-controller. As applications scale up, it starts to miss the past 40, 50 years research on how to abstract the program.

If move AngularJS data bindings out of the edges of system, the application is likely to have a fast reaction time.


Flux | Application Architecture for Building User Interfaces
Application Architecture for Building User Interfaces

Will Spring have a new life if support Reactive Architecture in Spring 5?

Read more: http://www.infoq.com/presentations/spring-framework-5

Project Reactor
Create efficient Reactive systems. Reactor is a second-generation Reactive library for building non-blocking applications on the JVM based on the Reactive Streams Specification. Reactive Core. 2.5.0.M3. Reactor is a fully non-blocking foundation with efficient demand management.

Though default method in Java 8 are a step backwards because it allows you to "pollute" your interfaces with code.

However it provides the most elegant and practical way to allow backwards compatibility. It's made it much easier for Oracle to update all the Collection classes and for you to retrofit your existing code for Lambda.

Default method is the bridge to Lambda in Java 8.