Kean, 19, broke into the Juventus first team last season and scored six goals in 13 league appearances, helping the club secure an eighth consecutive Serie A title.
He also became the youngest player to score for Italy in a 2-0 win against Finland in a Euro 2020 qualifier.
"I am very proud and honoured to wear the Everton shirt. I will give my best to this team," Kean said.
"I was convinced to sign because Everton is a club looking to the future and so am I. I know about the size of the club. It has big ambition and I will work very hard to help us fulfil what we want to achieve.
"I am used to winning and I want to bring this winning attitude to the team. I hope I will be very good on the field and bring the fans joy."
The deal for Kean includes possible performance add-ons of €2.5m, which could take the fee to €30m.
"A striker was one of our priority signings this summer," Everton boss Marco Silva added.
"Moise is strong, fast, with many good qualities as a striker and he is just 19 years old. He has talent and he is ready to work, ready to improve our squad and gives us different solutions.
"He was at a big club, now he's come to another big club and is ready to fight for this challenge and to give everything to Everton."
Kean's exit could open the door for Manchester United striker Romelu Lukaku to sign for Juventus as he seeks a move away from Old Trafford.
Sources have told ESPN FC that Juve have joined Inter Milan in the race to sign Lukaku this summer.