The 25-year-old will leave Cardiff Blues for the Premiership club having scored three tries in 28 Heineken Cup appearances and 39 tries in 114 appearances overall.
"Signing for Exeter Chiefs is a great move for me," said James. "They are a team that I've watched come up to the Premiership over the last few years and do really well.
"I've had a fantastic seven years with the Blues and I am very grateful to have been given the opportunity to play for them and for the support I've been shown over my career.
"Exeter are clearly an ambitious club and having talked to the coaches about where they want to go and also the plans for the stadium, I felt I wanted to be a part of it all and experience something different."
Exeter head coach Rob Baxter said: "Obviously we are delighted to have got Tom on board. Each year what you have to try and do is progress and move forward as a squad.
"We've had a good look at Tom over a period of time and for us it's difficult to ignore proven try-scorers, who have got a very good ability to break the gain line.
"One of Tom's biggest attributes is his ability to beat that first tackle from almost any scenario and I think that is the biggest qualities you need when you come up against big, strong defences.
"He is a very professional trainer, he's in exceptionally good physical nick; he's incredibly quick and, as I said, he has a great ability to beat the first defence and those are key attributes for us.
"Having met Tom what I liked about him from the outset was that he was keen to challenge himself in a new environment. He wants a different challenge to the Rabodirect Pro12, a competition he has done very well for Cardiff in for a number of years, and for us it's a good match-up.
"He's a guy who is still relatively young and still developing as a player, but he acknowledges there are areas of his game that he can add to and he wants the challenge of attacking the Premiership and hopefully the Heineken Cup with us."