SteemJ V0.4.0 has been released - Integrate Steem into your Java Project

in steemdev •  last year

After changing 30000 Lines in 345 files and spending the free time of the last two month I can finally share SteemJ in version 0.4.0 with you.


Previous release: 0.3.4

SteemJ V0.4.0 has been released

Hello Steemians!

I am really happy to share this new SteemJ version with you which kept me busy for the last 10 weeks and is a really huge milestone to become a fully functional Steem Wallet instead of a simple API Wrapper. In total nearly 30000 lines in 375 files have been changed to achieve this goal.


For me this is a really huge milestone. When talking to some users in the comment section and in issues at GitHub I already mentioned that the project had some huge design flaw. The reason behind this is that I simply wasn’t aware of all the sneaky details of the Steem Blockchain when I’ve started this project.

In the first weeks of development I had a lot of “WTF” moments and thought that I could simplify a lot on my side – The truth is that there was a reason for all these complicated ways of implementing something in the Steem source code which I was not aware of at that point in time.

So the most important and biggest change of this release is the adjustment of the architecture of SteemJ that is now more equal to the original Steem implementation.

Beside the general change of the architecture I also finalized the renaming of “steem-api-wrapper” to “steemj”.

Source –

This change leads to a new artifactId so from now on you need to add the following dependency:


You can also find other ways of adding SteemJ to your project in the official wiki.

Another problem that user often complained about was the outdated sample. To solve this issue SteemJ has been transformed into a multi module project and consists of steemj-core which is the actual library and steemj-sample which is a sample application.

Due to this change I have a chance to see problems while compiling the lib and you, as a user, can be sure that the sample at GitHub is working.

Full Changelog

The biggest changes for you, as a user, have already been shared in the last weeks in some preview posts:

  • Logging – Which will finally allow you to choose the logging framework of your choice.
  • The market_history_api – The market_history_api has been fully implemented and added to SteemJ.
  • Validation – SteemJ can validate your inputs to lower the traffic and to provide proper error messages.
  • Simplified Operations – Which allow you to perform common actions in a single line.
    But there was a lot more, so here is the whole changelog of SteemJ 0.4.0

Functional Updates

  • Implement get_private_key_from_password to make it easier for users to get their private keys #65
  • Implement a "privateKeyToWIF" method #73
  • Convert the project into a multi module project and include a sample application #69
  • Remove log4 implementation #70
  • Rename artifact to SteemJ #66
  • Check JSON String entered by the user is valid #80
  • Refactor getDiscussionBy and implement DiscussionQuery object #81
  • Improve code quality of PrivateKeyStorage #58
  • VirtualOperation constructor should be private #86
  • Fully implement market_history_api #85
  • All fields that are note "ByteTransformable" should have a private constructor #90
  • Add equals, hashCode and isEmpty to the Authority object #93
  • Move the FollowApi into separate package #92
  • Unrecognized field "author" when using getActiveVotes #72
  • memo_key is String? #91
  • Add the isImpossible method for the Authority object #96
  • Fix FutureExtension toByteArray #97
  • Add the witness_schedule_type enum #98
  • Remove as much duplications as possible to simplfy maintainability #88
  • Change default RPC node to wss:// #99
  • Add the multiply operation to the price object #104
  • Fix block_header_extensions parsing #94
  • Refactor the SignedTransaction object #87
  • Virtual operation "producer_report" has not been implemented yet #106
  • Add missing fields in Config object #107
  • Adjust CommentOptionsExtension too #108
  • Use provided username as default user for operations #21
  • Fix verifyAuthority behavior #111
  • Make the Socket Idle Timeout configurable #114
  • Implement a Client ReconnectHandler #113
  • CommunicationHandler Connection has been closed. #112
  • Implement SupportSteemJ feature #74
  • Check for default values and apply them #16
  • Update the posted comment #78
  • Simplyfy the usage of Operations by implementing the Wallet methods #71
  • Verify transactions "offline" #18
  • Handle null values when transforming an object into a byte array #31
  • Let the simplify operation methods return the operation so a user can get the generated values #118


Source –

Please notice that I currently offer a reward of (at least) 25 SBD for the first one that helps me to increase the documentation of the get_discussion method – Just checkout this post if you are interested in.

General information

What is SteemJ?

SteemJ is a project that allows you to communicate with a Steem node using Java. So far, the project supports most of the API calls and is also able to broadcast most of the common operation types. Further information can be found on GitHub.

How to add it to your project?

SteemJ binaries are pushed into the maven central repository and can be integrated with a bunch of build management tools like Maven. The Wiki provides a lot of examples for the most common build tools. If you do not use a build management tool you can download the binaries as described here.


The project became quite big and there is still a lot to do. If you want to support the project simply clone the git repository and submit a pull request. I would really appreciate it =).

git clone

Get in touch!

Most of my projects are pretty time consuming and I always try to provide some useful stuff to the community. What keeps me going for that is your feedback and your support. For that reason I would love to get some Feedback from you <3. Just contact me here on Steemit or ping me on GitHub.

If you want to stay up to date or just like the stuff I am doing it would be great if you could press the button below =).

follow me

Thanks for reading and best regards,

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

I hopefully all goes well


Yeah 🍀 thank you =)

Hey @dez1337, I see you are developer. Please just look at , and I hope that something can be done in this direction. Thank you


Hay @worldfinances and sorry for the late reply :(

I do not see the problem here: I mean it should be crystal clear to everyone that those people offering the services are no Robin Hoods or heros - They just want to earn money with their service. It is great that you show new users that using those services can be a bad deal, but in the end they simply need to understand this and stop using those services.

The only technical solution would be to disable the curation reward using a comment_options_operation - This is not possible through the UI, but can be achieved by using a library like SteemJ.

While saying that I also have a bad feeling about it because disabling the curation reward would also mess up the whole system Steem is based on - I mean the most people here do not like a post because it is just good - They expect that a lot of people think the same and that they earn a good curation reward in the end - So disabling the curation reward could also have a huge negative effect for the author.

Hope that helps a little bit ..

Best regards!

thank you for this important post

Hey there. Trying to find a way to resteem/share posts using SteemJ. Everything else about it looks flawless but I'm not sure if resteeming is a web-only feature or if it's just not included in this API.


Hay @atherz ,

resteeming a post is done by a custom_json operation. I am currently online by phone and can't provide a sample for SteemJ that easily, but here you can see how its done in steem-js. Please let me know if you got it working :)


@dez1337 Okay, seems like everything should be working: Parsed JSON, signed transaction, etc. When I broadcast the transaction containing the CustomJsonOperation, it doesn't throw any errors. Even then, I still don't see the resteemed post showing on my blog. Any final tips?


Hay @atherz,

Sadly I am still on tour but will be back at the weekend to check this issue. Could youplease create a github issue and provide as much information as possible? The only guess I have right now is that you forgot to add your account to the required posting auth field.

Best regatds!


Posted the issue!


Posted the solution (hopefully) :P :)

oke, siip



Oh nice. I need to update my jsf/primefaces project soon. Thanks a lot @dez1337


Thank you @cyriana 😊

Do you think this API might be compatible with either TeaVM or GWT?


Hay @muksihs and thank you for the great question :) Sadly, I can't answer it :(

It has been a long long time ago I had to work with GWT and correct me if I am wrong, but I think only "special" libraries are compatible with GWT. For TeaVM I also do not know if it will work.

--> So the only way to find this out would be to test it.

In general I would suggest to either use SteemJ in a backend and offer a REST-Api to a separated frontend OR use Steem-JS for pure WebApps.

Hope that helps :) In case you will go for a test with TeaVM please inform me about the results.

Best regards!

Yeah nice. I downloaded the old preview version to do some testing yesterday. Ill update asap.


Thank you for the support @jjb777 💪

this post is very beautiful . i like it sir . sir you can help me sir please . your groups add me please . i work the groups . i am helpless . please add me . https://steemit./@maksudarrahman