You might consider using FIX, as it's "broker-neutral". If you get tied to a particular platform, you may regret it later (as did I); even worse can be a broker-specific platform, which you have to toss out if your broker ends up being a problem.
That said, broker/platform-specific platforms are probably easier to code in initially (especially if you aren't doing anything aside from sending "simple" orders"); so if you factor in a significant chance of failure (and who shouldn't?

), it could be worth it to use one of those initially, then switch to FIX later if needed. It can eat up quite a bit of effort to switch, so keep that in mind as you develop stuff -- e.g.,, by abstracting away the platform-specific funtion calls.
Depending on how "trading intensive" your strategies are, you might want look for a DMA solution (sending orders to a specific exchange yourself), so as not to have your orders internalized your broker and/or sent to payment-for-order-flow firms, which may occur depending on their internal policies. Non-DMA "auto" routers that behave as such could significantly impact your profitability; it might not make things easier if your broker is trading against you, giving you mediocre fills, etc.
There is a free FIX system called QuickFix/J that uses Java, although I haven't tried it myself, it might be worth investigating. 500000 is probably enough to get a FIX account somewhere.