Wow you really know what you are doing, im checking through your github now. ill spend a few hours reading through code to see if its something i could tackle in a reasonable amount of time or not.
My biggest issue with bitcoinj s that i cant manage to persist a balance without deleting and re-downloading the block-chain. in main net this would be horribly slow for a server side app. maybe i am wrong and im doing it incorrectly, but i have about a week experience with bitcoinj.
My plan b was, use bitcoin-j, rewrite the source a bit to allow for a more "direct" approach. but your classes look a lot like whats in bitcoinj too, did you use bitcoinj as a base? how did you go about writing that?
can you outline a bit about what was involved in writing yoru bitcoin core framework/library or whatever you may call it.
also i notice a lot of bloom filtering and merkel root classes, is this doing the same as bitcoinj by only using spv wallets? or are those classes just carried over?
My BitcoinCore library supports both servers and wallets. Thus it has support for bloom filters which are used by SPV wallets. You need the Merkel root support to validate incoming transactions.
I started using BitcoinJ. When I decided to go my own way (mainly because BitcoinJ at that time did not support servers), I kept the same class names and parameters so that my existing application code would continue to work. Since then, the design has diverged significantly, especially with the addition of HD keys and segregated witness transactions.
I'm not sure what you mean when you say you cannot persist a balance. Do you mean the wallet has no transactions after a restart? If you look at the BitcoinWallet class in the version-2 branch of TokenExchange, that uses the BitcoinJ wallet support. So that might give you some pointers on maintaining a wallet using BitcoinJ. The BitcoinWallet class in the master branch of TokenExchange stores the wallet transactions in a RDBM (H2) but still uses BitcoinJ for the network support. My BitcoinWallet and JavaBitcoin projects uses my BitcoinCore library for everything (no BitcoinJ dependency).
If you are interested in using the Bitcoin Core RPC interface, take a look at my BitcoinMonitor project. This displays the status of a Bitcoin Core node. I use this to monitor my Bitcoin Core VPS node from my desktop. You can also look at the version-1 branch of TokenExchange which used a Bitcoin Core node for all of the Bitcoin support (as you can guess, I went through multiple design iterations for TokenExchange until I found one that I was happy with).