Migration from web 2.0 to 3.0

We are a startup working on a project with a business model designed for web 3.0, one that is poised to become a DAO. As we aren’t blockchain proficient right now and felt like blockchain technology still needs to mature, so we decided to develop the prototype of our first app in the standard web 2.0 specifications (using Java for backend and Flutter for front end). We found Dfinity 2 weeks ago, were really impressed and did a study, and have a bunch of questions for a better understanding before we decide to make the jump. We have very limited funds at the moment and need to be picky about how we spend it.

  1. Existing language compilers – There are compilers for high level languages like Java, what may be the factors to consider or changes we may need to make in order to make the code ready for compilation and suitable for the IC platform?

  2. How do we establish communication with canisters and other applications built on web 2.0 (native, hybrid android, ios or a backend application). From what we have analysed we could see there has to be an agent per language and agents we found available are for rust and javascript. Is there a plan to add support for other popular programming languages like java and dart?

  3. Today for javascript the bundler used is webpack, is there a suggested way to use other bundling tools like rollup? Why is it not made open for developers to pick their choice of libraries?

  4. The prior questions were to ascertain a way forward. What would you recommend?
    a. Continue building the MVP the way we did so far, and migrate to IC after support for Java and Flutter is available?
    b. Rewrite Java to motoco and build an agent in Dart for flutter? If yes, is there a guideline or specification available to build an agent?
    c. Scrap everything and rewrite everything to IC stack Motoko + React.

Options b and c may be hard considering our budget and the development done/funds spent so far, but will try if one of them is the best way forward.

Please mention the question numbers you are answering at the start of your reply so others can find the required answers easier! :relaxed:


You can write your canister logic using any language that compiles to Web Assembly. The most mature languages are Motoko, Rust, and C, but we’ve seen people in the community successfully build proof of concept compilers for other languages like AssemblyScript.

We do plan to support more agents, but our SDK team currently has plenty on our hands between now and launch.

I’d probably recommend using Rust or Motoko for your backend at this point, since I don’t expect Java support in the short-term.

Dart should probably be fine - I’m not an expert on it, but I think that Flutter can call out to either a Rust or a JS agent to make the needed calls for the meantime. I think that’s what most people are doing for now. Some discussion in this thread: Flutter for frontend - #18 by cryptoschindler